📄 io.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -