@@ -14,70 +14,71 @@ lazy_static! {
1414#[ allow( non_camel_case_types) ]
1515#[ derive( Debug , Clone , Copy ) ]
1616#[ repr( isize ) ]
17+ #[ allow( dead_code) ]
1718pub enum APICOffset {
1819 // RESERVED = 0x00
1920 // RESERVED = 0x10
20- IR = 0x20 , // ID Register
21- VR = 0x30 , // Version Register
21+ Ir = 0x20 , // ID Register
22+ Vr = 0x30 , // Version Register
2223 // RESERVED = 0x40
2324 // RESERVED = 0x50
2425 // RESERVED = 0x60
2526 // RESERVED = 0x70
26- TPR = 0x80 , // Text Priority Register
27- APR = 0x90 , // Arbitration Priority Register
28- PPR = 0xA0 , // Processor Priority Register
29- EOI = 0xB0 , // End of Interrupt
30- RRD = 0xC0 , // Remote Read Register
31- LDR = 0xD0 , // Logical Destination Register
32- DFR = 0xE0 , // DFR
33- SVR = 0xF0 , // Spurious (Interrupt) Vector Register
34- ISR1 = 0x100 , // In-Service Register 1
35- ISR2 = 0x110 , // In-Service Register 2
36- ISR3 = 0x120 , // In-Service Register 3
37- ISR4 = 0x130 , // In-Service Register 4
38- ISR5 = 0x140 , // In-Service Register 5
39- ISR6 = 0x150 , // In-Service Register 6
40- ISR7 = 0x160 , // In-Service Register 7
41- ISR8 = 0x170 , // In-Service Register 8
42- TMR1 = 0x180 , // Trigger Mode Register 1
43- TMR2 = 0x190 , // Trigger Mode Register 2
44- TMR3 = 0x1A0 , // Trigger Mode Register 3
45- TMR4 = 0x1B0 , // Trigger Mode Register 4
46- TMR5 = 0x1C0 , // Trigger Mode Register 5
47- TMR6 = 0x1D0 , // Trigger Mode Register 6
48- TMR7 = 0x1E0 , // Trigger Mode Register 7
49- TMR8 = 0x1F0 , // Trigger Mode Register 8
50- IRR1 = 0x200 , // Interrupt Request Register 1
51- IRR2 = 0x210 , // Interrupt Request Register 2
52- IRR3 = 0x220 , // Interrupt Request Register 3
53- IRR4 = 0x230 , // Interrupt Request Register 4
54- IRR5 = 0x240 , // Interrupt Request Register 5
55- IRR6 = 0x250 , // Interrupt Request Register 6
56- IRR7 = 0x260 , // Interrupt Request Register 7
57- IRR8 = 0x270 , // Interrupt Request Register 8
58- ESR = 0x280 , // Error Status Register
27+ Tpr = 0x80 , // Text Priority Register
28+ Apr = 0x90 , // Arbitration Priority Register
29+ Ppr = 0xA0 , // Processor Priority Register
30+ Eoi = 0xB0 , // End of Interrupt
31+ Rrd = 0xC0 , // Remote Read Register
32+ Ldr = 0xD0 , // Logical Destination Register
33+ Dfr = 0xE0 , // DFR
34+ Svr = 0xF0 , // Spurious (Interrupt) Vector Register
35+ Isr1 = 0x100 , // In-Service Register 1
36+ Isr2 = 0x110 , // In-Service Register 2
37+ Isr3 = 0x120 , // In-Service Register 3
38+ Isr4 = 0x130 , // In-Service Register 4
39+ Isr5 = 0x140 , // In-Service Register 5
40+ Isr6 = 0x150 , // In-Service Register 6
41+ Isr7 = 0x160 , // In-Service Register 7
42+ Isr8 = 0x170 , // In-Service Register 8
43+ Tmr1 = 0x180 , // Trigger Mode Register 1
44+ Tmr2 = 0x190 , // Trigger Mode Register 2
45+ Tmr3 = 0x1A0 , // Trigger Mode Register 3
46+ Tmr4 = 0x1B0 , // Trigger Mode Register 4
47+ Tmr5 = 0x1C0 , // Trigger Mode Register 5
48+ Tmr6 = 0x1D0 , // Trigger Mode Register 6
49+ Tmr7 = 0x1E0 , // Trigger Mode Register 7
50+ Tmr8 = 0x1F0 , // Trigger Mode Register 8
51+ Irr1 = 0x200 , // Interrupt Request Register 1
52+ Irr2 = 0x210 , // Interrupt Request Register 2
53+ Irr3 = 0x220 , // Interrupt Request Register 3
54+ Irr4 = 0x230 , // Interrupt Request Register 4
55+ Irr5 = 0x240 , // Interrupt Request Register 5
56+ Irr6 = 0x250 , // Interrupt Request Register 6
57+ Irr7 = 0x260 , // Interrupt Request Register 7
58+ Irr8 = 0x270 , // Interrupt Request Register 8
59+ Esr = 0x280 , // Error Status Register
5960 // RESERVED = 0x290
6061 // RESERVED = 0x2A0
6162 // RESERVED = 0x2B0
6263 // RESERVED = 0x2C0
6364 // RESERVED = 0x2D0
6465 // RESERVED = 0x2E0
65- LVT_CMCI = 0x2F0 , // LVT Corrected Machine Check Interrupt (CMCI) Register
66- ICR1 = 0x300 , // Interrupt Command Register 1
67- ICR2 = 0x310 , // Interrupt Command Register 2
68- LVT_T = 0x320 , // LVT Timer Register
69- LVT_TSR = 0x330 , // LVT Thermal Sensor Register
70- LVT_PMCR = 0x340 , // LVT Performance Monitoring Counters Register
71- LVT_LINT0 = 0x350 , // LVT LINT0 Register
72- LVT_LINT1 = 0x360 , // LVT LINT1 Register
73- LVT_E = 0x370 , // LVT Error Register
74- TICR = 0x380 , // Initial Count Register (for Timer)
75- TCCR = 0x390 , // Current Count Register (for Timer)
66+ LvtCmci = 0x2F0 , // LVT Corrected Machine Check Interrupt (CMCI) Register
67+ Icr1 = 0x300 , // Interrupt Command Register 1
68+ Icr2 = 0x310 , // Interrupt Command Register 2
69+ LvtT = 0x320 , // LVT Timer Register
70+ LvtTsr = 0x330 , // LVT Thermal Sensor Register
71+ LvtPmcr = 0x340 , // LVT Performance Monitoring Counters Register
72+ LvtLint0 = 0x350 , // LVT LINT0 Register
73+ LvtLint1 = 0x360 , // LVT LINT1 Register
74+ LvtE = 0x370 , // LVT Error Register
75+ Ticr = 0x380 , // Initial Count Register (for Timer)
76+ Tccr = 0x390 , // Current Count Register (for Timer)
7677 // RESERVED = 0x3A0
7778 // RESERVED = 0x3B0
7879 // RESERVED = 0x3C0
7980 // RESERVED = 0x3D0
80- TDCR = 0x3E0 , // Divide Configuration Register (for Timer)
81+ Tdcr = 0x3E0 , // Divide Configuration Register (for Timer)
8182 // RESERVED = 0x3F0
8283}
8384
@@ -186,21 +187,21 @@ unsafe fn init_local_apic(
186187}
187188
188189unsafe fn init_timer ( lapic_pointer : * mut u32 ) {
189- let svr = lapic_pointer. offset ( APICOffset :: SVR as isize / 4 ) ;
190+ let svr = lapic_pointer. offset ( APICOffset :: Svr as isize / 4 ) ;
190191 svr. write_volatile ( svr. read_volatile ( ) | 0x100 ) ; // Set bit 8
191192
192- let lvt_lint1 = lapic_pointer. offset ( APICOffset :: LVT_LINT1 as isize / 4 ) ;
193+ let lvt_lint1 = lapic_pointer. offset ( APICOffset :: LvtT as isize / 4 ) ;
193194 lvt_lint1. write_volatile ( 0x20 | ( 1 << 17 ) ) ; // Vector 0x20, periodic mode
194195
195- let tdcr = lapic_pointer. offset ( APICOffset :: TDCR as isize / 4 ) ;
196+ let tdcr = lapic_pointer. offset ( APICOffset :: Tdcr as isize / 4 ) ;
196197 tdcr. write_volatile ( 0x3 ) ; // Divide by 16 mode
197198
198- let ticr = lapic_pointer. offset ( APICOffset :: TICR as isize / 4 ) ;
199+ let ticr = lapic_pointer. offset ( APICOffset :: Ticr as isize / 4 ) ;
199200 ticr. write_volatile ( 0x100000 ) ; // An arbitrary value for the initial value of the timer
200201}
201202
202203unsafe fn init_keyboard ( lapic_pointer : * mut u32 ) {
203- let keyboard_register = lapic_pointer. offset ( APICOffset :: LVT_LINT1 as isize / 4 ) ;
204+ let keyboard_register = lapic_pointer. offset ( APICOffset :: LvtLint1 as isize / 4 ) ;
204205 keyboard_register. write_volatile ( InterruptIndex :: Keyboard as u8 as u32 ) ;
205206}
206207
@@ -258,6 +259,6 @@ fn disable_pic() {
258259pub fn end_interrupt ( ) {
259260 unsafe {
260261 let lapic_ptr = LAPIC_ADDR . lock ( ) . address ;
261- lapic_ptr. offset ( APICOffset :: EOI as isize / 4 ) . write_volatile ( 0 ) ;
262+ lapic_ptr. offset ( APICOffset :: Eoi as isize / 4 ) . write_volatile ( 0 ) ;
262263 }
263264}
0 commit comments