updated include/portio.h to not use gcc-specific "statement blocks" but instead have inportX() be static inline functions. Verified that the compiler does in fact inline them
git-svn-id: svn://anubis/hos/trunk@60 5b3e749e-e535-0410-8002-a9bb6afbdfca
This commit is contained in:
parent
e70b1a5213
commit
63289deade
@ -13,25 +13,25 @@
|
|||||||
#define outportd(port, val) \
|
#define outportd(port, val) \
|
||||||
__asm__ __volatile__ ("outl %%eax, %%dx" : : "a" (val), "d" (port));
|
__asm__ __volatile__ ("outl %%eax, %%dx" : : "a" (val), "d" (port));
|
||||||
|
|
||||||
#define inportb(port) \
|
static inline u8_t inportb(u16_t port)
|
||||||
({ \
|
{
|
||||||
u8_t val; \
|
u8_t val;
|
||||||
__asm__ __volatile__ ("inb %%dx, %%al" : "=a" (val) : "d" (port)); \
|
__asm__ __volatile__ ("inb %%dx, %%al" : "=a" (val) : "d" (port));
|
||||||
val; \
|
return val;
|
||||||
});
|
}
|
||||||
|
|
||||||
#define inportw(port) \
|
static inline u16_t inportw(u16_t port)
|
||||||
({ \
|
{
|
||||||
u16_t val; \
|
u16_t val;
|
||||||
__asm__ __volatile__ ("inw %%dx, %%al" : "=a" (val) : "d" (port)); \
|
__asm__ __volatile__ ("inw %%dx, %%al" : "=a" (val) : "d" (port));
|
||||||
val; \
|
return val;
|
||||||
});
|
}
|
||||||
|
|
||||||
#define inportd(port) \
|
static inline u32_t inportd(u16_t port)
|
||||||
({ \
|
{
|
||||||
u32_t val; \
|
u32_t val;
|
||||||
__asm__ __volatile__ ("inl %%dx, %%al" : "=a" (val) : "d" (port)); \
|
__asm__ __volatile__ ("inl %%dx, %%al" : "=a" (val) : "d" (port));
|
||||||
val; \
|
return val;
|
||||||
});
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user