mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 15:08:21 +00:00
apic: misc changes
This commit is contained in:
@@ -93,12 +93,12 @@ static int getcount(int type) {
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void writelapic(int reg, uint32_t v) {
|
static inline void writelapic(int reg, uint32_t v) {
|
||||||
volatile uint32_t *ptr = (void *)((uintptr_t)lapicaddr + reg);
|
volatile uint32_t *ptr = (void *)((uintptr_t)lapicaddr + reg);
|
||||||
*ptr = v;
|
*ptr = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t readlapic(int reg) {
|
static inline uint32_t readlapic(int reg) {
|
||||||
volatile uint32_t *ptr = (void *)((uintptr_t)lapicaddr + reg);
|
volatile uint32_t *ptr = (void *)((uintptr_t)lapicaddr + reg);
|
||||||
return *ptr;
|
return *ptr;
|
||||||
}
|
}
|
||||||
@@ -242,10 +242,9 @@ void arch_apic_timerinit() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void arch_apic_sendipi(uint8_t cpu, uint8_t vec, uint8_t dest, uint8_t mode, uint8_t level) {
|
void arch_apic_sendipi(uint8_t cpu, uint8_t vec, uint8_t dest, uint8_t mode, uint8_t level) {
|
||||||
while (readlapic(APIC_REG_ICR_LO) & APIC_REG_ICR_LO_STATUS) CPU_PAUSE();
|
|
||||||
|
|
||||||
writelapic(APIC_REG_ICR_HI, (uint32_t)cpu << 24);
|
writelapic(APIC_REG_ICR_HI, (uint32_t)cpu << 24);
|
||||||
writelapic(APIC_REG_ICR_LO, vec | (level << 8) | (mode << 11) | (dest << 18) | (1 << 14));
|
writelapic(APIC_REG_ICR_LO, vec | (level << 8) | (mode << 11) | (dest << 18) | (1 << 14));
|
||||||
|
while (readlapic(APIC_REG_ICR_LO) & APIC_REG_ICR_LO_STATUS) CPU_PAUSE();
|
||||||
}
|
}
|
||||||
|
|
||||||
void arch_apic_init() {
|
void arch_apic_init() {
|
||||||
|
|||||||
Reference in New Issue
Block a user