Changeset 46 for trunk/hal/x86_64/hal_lapic.c
- Timestamp:
- Jun 23, 2017, 1:31:23 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/hal/x86_64/hal_lapic.c
r45 r46 37 37 vaddr_t lapic_va __in_kdata = 0; 38 38 39 void lapic_write(uint32_t reg, uint32_t val)39 void hal_lapic_write(uint32_t reg, uint32_t val) 40 40 { 41 41 *((volatile uint32_t *)(lapic_va + reg)) = val; 42 42 } 43 43 44 uint32_t lapic_read(uint32_t reg)44 uint32_t hal_lapic_read(uint32_t reg) 45 45 { 46 46 return *((volatile uint32_t *)(lapic_va + reg)); 47 47 } 48 48 49 void hal_init_lapic()49 uint32_t hal_lapic_gid() 50 50 { 51 uint32_t id; 51 return hal_lapic_read(LAPIC_ID) >> LAPIC_ID_SHIFT; 52 } 52 53 54 void hal_lapic_init() 55 { 53 56 lapic_va = hal_gpt_bootstrap_valloc(1); // XXX: should be shared 54 57 55 58 hal_gpt_enter(lapic_va, lapic_pa); 56 59 57 lapic_write(LAPIC_TPR, 0); 58 lapic_write(LAPIC_SVR, LAPIC_SVR_ENABLE|LAPIC_SPURIOUS_VECTOR); 59 60 id = lapic_read(LAPIC_ID) >> LAPIC_ID_SHIFT; 61 62 x86_printf("-> LAPIC id: %d\n", id); 60 hal_lapic_write(LAPIC_TPR, 0); 61 hal_lapic_write(LAPIC_SVR, LAPIC_SVR_ENABLE|LAPIC_SPURIOUS_VECTOR); 63 62 } 64 63
Note: See TracChangeset
for help on using the changeset viewer.