⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io.h

📁 上一次项目的vivi 代码
💻 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 + -