ioapic - missing volatiles

leads to a kernel panic when using clang and SMP

reported by trd <trdempsey.201201@gmail.com>
This commit is contained in:
Tomas Hruby 2012-03-29 00:53:38 -07:00
parent 1e399dd8bd
commit 5ab87a6c38

View file

@ -178,14 +178,14 @@ static u32_t lapic_bus_freq[CONFIG_MAX_CPUS];
static u32_t ioapic_read(u32_t ioa_base, u32_t reg)
{
*((u32_t *)(ioa_base + IOAPIC_IOREGSEL)) = (reg & 0xff);
return *(u32_t *)(ioa_base + IOAPIC_IOWIN);
*((volatile u32_t *)(ioa_base + IOAPIC_IOREGSEL)) = (reg & 0xff);
return *(volatile u32_t *)(ioa_base + IOAPIC_IOWIN);
}
static void ioapic_write(u32_t ioa_base, u8_t reg, u32_t val)
{
*((u32_t *)(ioa_base + IOAPIC_IOREGSEL)) = reg;
*((u32_t *)(ioa_base + IOAPIC_IOWIN)) = val;
*((volatile u32_t *)(ioa_base + IOAPIC_IOREGSEL)) = reg;
*((volatile u32_t *)(ioa_base + IOAPIC_IOWIN)) = val;
}
void lapic_microsec_sleep(unsigned count);