@@ -14,70 +14,71 @@ lazy_static! {
14
14
#[ allow( non_camel_case_types) ]
15
15
#[ derive( Debug , Clone , Copy ) ]
16
16
#[ repr( isize ) ]
17
+ #[ allow( dead_code) ]
17
18
pub enum APICOffset {
18
19
// RESERVED = 0x00
19
20
// RESERVED = 0x10
20
- IR = 0x20 , // ID Register
21
- VR = 0x30 , // Version Register
21
+ Ir = 0x20 , // ID Register
22
+ Vr = 0x30 , // Version Register
22
23
// RESERVED = 0x40
23
24
// RESERVED = 0x50
24
25
// RESERVED = 0x60
25
26
// 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
59
60
// RESERVED = 0x290
60
61
// RESERVED = 0x2A0
61
62
// RESERVED = 0x2B0
62
63
// RESERVED = 0x2C0
63
64
// RESERVED = 0x2D0
64
65
// 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)
76
77
// RESERVED = 0x3A0
77
78
// RESERVED = 0x3B0
78
79
// RESERVED = 0x3C0
79
80
// RESERVED = 0x3D0
80
- TDCR = 0x3E0 , // Divide Configuration Register (for Timer)
81
+ Tdcr = 0x3E0 , // Divide Configuration Register (for Timer)
81
82
// RESERVED = 0x3F0
82
83
}
83
84
@@ -186,21 +187,21 @@ unsafe fn init_local_apic(
186
187
}
187
188
188
189
unsafe 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 ) ;
190
191
svr. write_volatile ( svr. read_volatile ( ) | 0x100 ) ; // Set bit 8
191
192
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 ) ;
193
194
lvt_lint1. write_volatile ( 0x20 | ( 1 << 17 ) ) ; // Vector 0x20, periodic mode
194
195
195
- let tdcr = lapic_pointer. offset ( APICOffset :: TDCR as isize / 4 ) ;
196
+ let tdcr = lapic_pointer. offset ( APICOffset :: Tdcr as isize / 4 ) ;
196
197
tdcr. write_volatile ( 0x3 ) ; // Divide by 16 mode
197
198
198
- let ticr = lapic_pointer. offset ( APICOffset :: TICR as isize / 4 ) ;
199
+ let ticr = lapic_pointer. offset ( APICOffset :: Ticr as isize / 4 ) ;
199
200
ticr. write_volatile ( 0x100000 ) ; // An arbitrary value for the initial value of the timer
200
201
}
201
202
202
203
unsafe 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 ) ;
204
205
keyboard_register. write_volatile ( InterruptIndex :: Keyboard as u8 as u32 ) ;
205
206
}
206
207
@@ -258,6 +259,6 @@ fn disable_pic() {
258
259
pub fn end_interrupt ( ) {
259
260
unsafe {
260
261
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 ) ;
262
263
}
263
264
}
0 commit comments