io.h

来自「上一次项目的vivi 代码」· C头文件 代码 · 共 63 行

H
63
字号
#ifndef _VIVI_IO_H_#define _VIVI_IO_H_//#define readb(x)	*(volatile unsigned char *)(x)//#define readw(x)	*(volatile unsigned short *)(x)//#define readl(x)	*(volatile unsigned long *)(x)//#define writeb(v,x)	*(volatile unsigned char *)(x) = (v)//#define writew(v,x)	*(volatile unsigned short *)(x) = (v)//#define writel(v,x)	*(volatile unsigned long *)(x) = (v)static inline u8 readb(__u32 port){	return *(volatile __u8 *)(port);}/*static inline unsigned short readw(__u32 addr){	unsigned short val;	__asm__( "mov   r2,%1\n" \             "ldrh	%0, [r2]\n" \             : "=r" (val) \             : "r" (addr) \             : "r2");    return val;}*/static inline unsigned short readw(__u32 addr){    register unsigned short val;	__asm__ __volatile__ ( "ldrh	%0, [%1]\n" \             : "=r" (val)             : "r" (addr));    return val;}static inline u32 readl(__u32 port){	return *(volatile __u32 *)(port);}static inline void writeb(__u8 data, __u32 port){	*(volatile __u8 *)(port) = data;}/*static inline void writew(__u16 val, __u32 addr){	__asm__( "mov   r2,%1\n" \             "strh	%0, [r2]\n" \             : \             : "r" (val),"r" (addr) \             : "r2");    return val;} */static inline void writew(__u16 val, __u32 addr){    __asm__ __volatile__ ( "strh	%0, [%1]\n" \             :: "r" (val),"r" (addr));}static inline void writel(__u32 data, __u32 port){	*(volatile __u32 *)(port) = data;}#endif /* _VIVI_IO_H_ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?