Fix in32()/out32() to use uint instead of ulong
This commit is contained in:
parent
98134957e7
commit
dda1b6379f
@ -221,9 +221,9 @@ ushort in16(ushort ioaddr)
|
|||||||
return __asm!ushort("inw %dx, %ax", "={ax},{dx}", ioaddr);
|
return __asm!ushort("inw %dx, %ax", "={ax},{dx}", ioaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
ulong in32(ushort ioaddr)
|
uint in32(ushort ioaddr)
|
||||||
{
|
{
|
||||||
return __asm!ulong("inl %dx, %eax", "={eax},{dx}", ioaddr);
|
return __asm!uint("inl %dx, %eax", "={eax},{dx}", ioaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void out8(ushort ioaddr, ubyte v)
|
void out8(ushort ioaddr, ubyte v)
|
||||||
@ -236,7 +236,7 @@ void out16(ushort ioaddr, ushort v)
|
|||||||
__asm("outw %ax, %dx", "{dx},{ax}", ioaddr, v);
|
__asm("outw %ax, %dx", "{dx},{ax}", ioaddr, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
void out32(ushort ioaddr, ulong v)
|
void out32(ushort ioaddr, uint v)
|
||||||
{
|
{
|
||||||
__asm("outl %eax, %dx", "{dx},{eax}", ioaddr, v);
|
__asm("outl %eax, %dx", "{dx},{eax}", ioaddr, v);
|
||||||
}
|
}
|
||||||
|
@ -26,9 +26,9 @@ struct Pci
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ulong read_config_register(ulong bus_id, ulong device_idx, ulong register_id)
|
private static uint read_config_register(uint bus_id, uint device_idx, uint register_id)
|
||||||
{
|
{
|
||||||
ulong addr = 0x8000_0000u | (bus_id << 16u) | (device_idx << 11u) | (register_id << 2u);
|
uint addr = 0x8000_0000u | (bus_id << 16u) | (device_idx << 11u) | (register_id << 2u);
|
||||||
out32(IO_ADDR_CONFIG_ADDRESS, addr);
|
out32(IO_ADDR_CONFIG_ADDRESS, addr);
|
||||||
return in32(IO_ADDR_CONFIG_DATA);
|
return in32(IO_ADDR_CONFIG_DATA);
|
||||||
}
|
}
|
||||||
@ -59,12 +59,12 @@ struct Pci
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void scan(ulong bus_id, ulong device_idx)
|
private static void scan(uint bus_id, uint device_idx)
|
||||||
{
|
{
|
||||||
ulong reg0 = read_config_register(bus_id, device_idx, 0u);
|
ulong reg0 = read_config_register(bus_id, device_idx, 0u);
|
||||||
if (reg0 != 0xFFFFFFFFu)
|
if (reg0 != 0xFFFFFFFFu)
|
||||||
{
|
{
|
||||||
ulong reg2 = read_config_register(bus_id, device_idx, 2u);
|
uint reg2 = read_config_register(bus_id, device_idx, 2u);
|
||||||
ushort vendor_id = reg0 & 0xFFFFu;
|
ushort vendor_id = reg0 & 0xFFFFu;
|
||||||
ushort device_id = (reg0 >> 16u) & 0xFFFFu;
|
ushort device_id = (reg0 >> 16u) & 0xFFFFu;
|
||||||
ubyte class_id = (reg2 >> 24u) & 0xFFu;
|
ubyte class_id = (reg2 >> 24u) & 0xFFu;
|
||||||
@ -81,9 +81,9 @@ struct Pci
|
|||||||
public static void initialize()
|
public static void initialize()
|
||||||
{
|
{
|
||||||
Klog.writefln("Scanning PCI devices...");
|
Klog.writefln("Scanning PCI devices...");
|
||||||
for (ulong bus_id = 0u; bus_id < 256u; bus_id++)
|
for (uint bus_id = 0u; bus_id < 256u; bus_id++)
|
||||||
{
|
{
|
||||||
for (ulong device_idx = 0u; device_idx < 32u; device_idx++)
|
for (uint device_idx = 0u; device_idx < 32u; device_idx++)
|
||||||
{
|
{
|
||||||
scan(bus_id, device_idx);
|
scan(bus_id, device_idx);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user