acpi: add APIC irq ack and legacy vector remapping
This commit is contained in:
@@ -2,38 +2,38 @@
|
||||
|
||||
uint8_t inportb(uint16_t port) {
|
||||
uint8_t data;
|
||||
asm volatile("inb %1, %0" : "=a"(data) : "dN"(port));
|
||||
__asm__ __volatile__("inb %1, %0" : "=a"(data) : "dN"(port));
|
||||
return data;
|
||||
}
|
||||
|
||||
void outportb(uint16_t port, uint8_t data) {
|
||||
asm volatile("outb %1, %0" : : "dN"(port), "a"(data));
|
||||
__asm__ __volatile__("outb %1, %0" : : "dN"(port), "a"(data));
|
||||
}
|
||||
|
||||
uint16_t inportw(uint16_t port) {
|
||||
uint16_t data;
|
||||
asm volatile("inw %1, %0" : "=a"(data) : "dN"(port));
|
||||
__asm__ __volatile__("inw %1, %0" : "=a"(data) : "dN"(port));
|
||||
return data;
|
||||
}
|
||||
|
||||
void outportw(uint16_t port, uint16_t data) {
|
||||
asm volatile("outw %1, %0" : : "dN"(port), "a"(data));
|
||||
__asm__ __volatile__("outw %1, %0" : : "dN"(port), "a"(data));
|
||||
}
|
||||
|
||||
uint32_t inportl(uint16_t port) {
|
||||
uint32_t data;
|
||||
asm volatile("inl %%dx, %%eax" : "=a"(data) : "dN"(port));
|
||||
__asm__ __volatile__("inl %%dx, %%eax" : "=a"(data) : "dN"(port));
|
||||
return data;
|
||||
}
|
||||
|
||||
void outportl(uint16_t port, uint32_t data) {
|
||||
asm volatile("outl %%eax, %%dx" : : "dN"(port), "a"(data));
|
||||
__asm__ __volatile__("outl %%eax, %%dx" : : "dN"(port), "a"(data));
|
||||
}
|
||||
|
||||
void outportsw(uint16_t port, void *data, uint32_t size) {
|
||||
asm volatile("rep outsw" : "+S"(data), "+c"(size) : "d"(port));
|
||||
__asm__ __volatile__("rep outsw" : "+S"(data), "+c"(size) : "d"(port));
|
||||
}
|
||||
|
||||
void inportsw(uint16_t port, unsigned char *data, unsigned long size) {
|
||||
asm volatile("rep insw" : "+D"(data), "+c"(size) : "d"(port) : "memory");
|
||||
__asm__ __volatile__("rep insw" : "+D"(data), "+c"(size) : "d"(port) : "memory");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user