21 :
"=a" (regs->
rax),
"=b" (regs->
rbx),
"=c" (regs->
rcx),
38 wrmsr(uint32_t
id, uint64_t value)
43 :
"c" (id),
"A" (value));
64 : [p]
"Nd" (port), [v]
"a" (value)
86 : [p]
"Nd" (port), [v]
"a" (value)
108 : [p]
"Nd" (port), [v]
"a" (value)
116 "mov rdi, %[paddr]\n" 119 : [paddr]
"m" (paddr)
136 asm volatile (
"sti");
142 asm volatile (
"cli");
148 asm volatile (
"hlt");
154 asm volatile (
"int 6");
160 asm volatile (
"int 0xff");
164 #endif // ifndef __NO_INLINE__
__forceinline uint8_t io_inb(uint16_t port)
__forceinline void io_outb(uint16_t port, uint8_t value)
__forceinline uint64_t rdmsr(uint32_t id)
__forceinline void halt()
__forceinline void invalid_opcode()
__forceinline void io_outd(uint16_t port, uint32_t value)
__forceinline void set_pagetable(uint64_t paddr)
__forceinline void wrmsr(uint32_t id, uint64_t value)
__forceinline void enable_interrupts()
__forceinline void cpuid(uint32_t code, registers4_t *regs)
__forceinline void fatal()
__forceinline void disable_interrupts()
__forceinline uint16_t io_inw(uint16_t port)
__forceinline uint32_t io_ind(uint16_t port)
__forceinline void invalidate_page(void *vaddr)
A record describing the first 4 general-purpose registers.
#define __forceinline
Force a function to be inline, even in debug mode.
__forceinline void io_outw(uint16_t port, uint16_t value)