cregit-Linux how code gets into the kernel

Release 4.14 arch/ia64/include/asm/sn/io.h

/* 
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file "COPYING" in the main directory of this archive
 * for more details.
 *
 * Copyright (C) 2000-2004 Silicon Graphics, Inc. All rights reserved.
 */

#ifndef _ASM_SN_IO_H

#define _ASM_SN_IO_H
#include <linux/compiler.h>
#include <asm/intrinsics.h>

extern void * sn_io_addr(unsigned long port) __attribute_const__; /* Forward definition */
extern void __sn_mmiowb(void); /* Forward definition */

extern int num_cnodes;


#define __sn_mf_a()   ia64_mfa()

extern void sn_dma_flush(unsigned long);


#define __sn_inb ___sn_inb

#define __sn_inw ___sn_inw

#define __sn_inl ___sn_inl

#define __sn_outb ___sn_outb

#define __sn_outw ___sn_outw

#define __sn_outl ___sn_outl

#define __sn_readb ___sn_readb

#define __sn_readw ___sn_readw

#define __sn_readl ___sn_readl

#define __sn_readq ___sn_readq

#define __sn_readb_relaxed ___sn_readb_relaxed

#define __sn_readw_relaxed ___sn_readw_relaxed

#define __sn_readl_relaxed ___sn_readl_relaxed

#define __sn_readq_relaxed ___sn_readq_relaxed

/*
 * Convenience macros for setting/clearing bits using the above accessors
 */


#define __sn_setq_relaxed(addr, val) \
	writeq((__sn_readq_relaxed(addr) | (val)), (addr))

#define __sn_clrq_relaxed(addr, val) \
	writeq((__sn_readq_relaxed(addr) & ~(val)), (addr))

/*
 * The following routines are SN Platform specific, called when
 * a reference is made to inX/outX set macros.  SN Platform
 * inX set of macros ensures that Posted DMA writes on the
 * Bridge is flushed.
 *
 * The routines should be self explainatory.
 */


static inline unsigned int ___sn_inb (unsigned long port) { volatile unsigned char *addr; unsigned char ret = -1; if ((addr = sn_io_addr(port))) { ret = *addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); } return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre58100.00%1100.00%
Total58100.00%1100.00%


static inline unsigned int ___sn_inw (unsigned long port) { volatile unsigned short *addr; unsigned short ret = -1; if ((addr = sn_io_addr(port))) { ret = *addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); } return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre58100.00%1100.00%
Total58100.00%1100.00%


static inline unsigned int ___sn_inl (unsigned long port) { volatile unsigned int *addr; unsigned int ret = -1; if ((addr = sn_io_addr(port))) { ret = *addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); } return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre58100.00%1100.00%
Total58100.00%1100.00%


static inline void ___sn_outb (unsigned char val, unsigned long port) { volatile unsigned char *addr; if ((addr = sn_io_addr(port))) { *addr = val; __sn_mmiowb(); } }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4197.62%150.00%
Jesse Barnes12.38%150.00%
Total42100.00%2100.00%


static inline void ___sn_outw (unsigned short val, unsigned long port) { volatile unsigned short *addr; if ((addr = sn_io_addr(port))) { *addr = val; __sn_mmiowb(); } }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4197.62%150.00%
Jesse Barnes12.38%150.00%
Total42100.00%2100.00%


static inline void ___sn_outl (unsigned int val, unsigned long port) { volatile unsigned int *addr; if ((addr = sn_io_addr(port))) { *addr = val; __sn_mmiowb(); } }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4197.62%150.00%
Jesse Barnes12.38%150.00%
Total42100.00%2100.00%

/* * The following routines are SN Platform specific, called when * a reference is made to readX/writeX set macros. SN Platform * readX set of macros ensures that Posted DMA writes on the * Bridge is flushed. * * The routines should be self explainatory. */
static inline unsigned char ___sn_readb (const volatile void __iomem *addr) { unsigned char val; val = *(volatile unsigned char __force *)addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); return val; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4291.30%133.33%
Jesse Barnes48.70%266.67%
Total46100.00%3100.00%


static inline unsigned short ___sn_readw (const volatile void __iomem *addr) { unsigned short val; val = *(volatile unsigned short __force *)addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); return val; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4291.30%133.33%
Jesse Barnes48.70%266.67%
Total46100.00%3100.00%


static inline unsigned int ___sn_readl (const volatile void __iomem *addr) { unsigned int val; val = *(volatile unsigned int __force *)addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); return val; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4291.30%133.33%
Jesse Barnes48.70%266.67%
Total46100.00%3100.00%


static inline unsigned long ___sn_readq (const volatile void __iomem *addr) { unsigned long val; val = *(volatile unsigned long __force *)addr; __sn_mf_a(); sn_dma_flush((unsigned long)addr); return val; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre4291.30%133.33%
Jesse Barnes48.70%266.67%
Total46100.00%3100.00%

/* * For generic and SN2 kernels, we have a set of fast access * PIO macros. These macros are provided on SN Platform * because the normal inX and readX macros perform an * additional task of flushing Post DMA request on the Bridge. * * These routines should be self explainatory. */
static inline unsigned int sn_inb_fast (unsigned long port) { volatile unsigned char *addr = (unsigned char *)port; unsigned char ret; ret = *addr; __sn_mf_a(); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre40100.00%1100.00%
Total40100.00%1100.00%


static inline unsigned int sn_inw_fast (unsigned long port) { volatile unsigned short *addr = (unsigned short *)port; unsigned short ret; ret = *addr; __sn_mf_a(); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre40100.00%1100.00%
Total40100.00%1100.00%


static inline unsigned int sn_inl_fast (unsigned long port) { volatile unsigned int *addr = (unsigned int *)port; unsigned int ret; ret = *addr; __sn_mf_a(); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre40100.00%1100.00%
Total40100.00%1100.00%


static inline unsigned char ___sn_readb_relaxed (const volatile void __iomem *addr) { return *(volatile unsigned char __force *)addr; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre2284.62%150.00%
Jesse Barnes415.38%150.00%
Total26100.00%2100.00%


static inline unsigned short ___sn_readw_relaxed (const volatile void __iomem *addr) { return *(volatile unsigned short __force *)addr; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre2284.62%150.00%
Jesse Barnes415.38%150.00%
Total26100.00%2100.00%


static inline unsigned int ___sn_readl_relaxed (const volatile void __iomem *addr) { return *(volatile unsigned int __force *) addr; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre2284.62%150.00%
Jesse Barnes415.38%150.00%
Total26100.00%2100.00%


static inline unsigned long ___sn_readq_relaxed (const volatile void __iomem *addr) { return *(volatile unsigned long __force *) addr; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre2284.62%150.00%
Jesse Barnes415.38%150.00%
Total26100.00%2100.00%

struct pci_dev;
static inline int sn_pci_set_vchan(struct pci_dev *pci_dev, unsigned long *addr, int vchan) { if (vchan > 1) { return -1; } if (!(*addr >> 32)) /* Using a mask here would be cleaner */ return 0; /* but this generates better code */ if (vchan == 1) { /* Set Bit 57 */ *addr |= (1UL << 57); } else { /* Clear Bit 57 */ *addr &= ~(1UL << 57); } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre82100.00%1100.00%
Total82100.00%1100.00%

#endif /* _ASM_SN_IO_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Patrick Gefre86893.74%116.67%
Jesse Barnes363.89%350.00%
Mark Maule212.27%116.67%
Jack Steiner10.11%116.67%
Total926100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.