|
|
1.1 root 1: \
2: \ ioapic and local apic tester
3: \
4: \ Copyright (C) 2003 Stefan Reinauer
5: \
6: \ See the file "COPYING" for further information about
7: \ the copyright and warranty status of this work.
8: \
9:
10: hex
11:
12: fee00000 constant lapic_base
13: fec00000 constant ioapic_base
14:
15: : read_lapic ( regoffset -- value )
16: lapic_base + l@
17: ;
18:
19: : write_lapic ( value regoffset -- )
20: lapic_base + l!
21: ;
22:
23: : read_ioapic ( regoffset -- low_value high_value )
24: 2* 10 + dup
25: ioapic_base l! ioapic_base 4 cells + l@
26: swap 1+
27: ioapic_base l! ioapic_base 4 cells + l@
28: ;
29:
30: : write_ioapic ( low high regoffset -- )
31: 2* 10 + dup ( low high offs offs )
32: ioapic_base l! rot ioapic_base 4 cells + l! ( high offs )
33: 1+
34: ioapic_base l! ioapic_base 4 cells + l! ( high offs )
35: ;
36:
37: : test-lapic
38: s" Dumping local apic:" type cr
39: 3f0 0 do
40: i dup ( lapic_base + ) s" 0x" type . s" = 0x" type read_lapic space .
41: i 30 and 0= if cr then
42: 10 +loop
43: cr
44: ;
45:
46: : test-ioapic
47: s" Dumping io apic:" type cr
48: 17 0 do
49: i dup s" irq=" type . read_ioapic s" = 0x" type . s" ." type .
50: i 1 and 0<> if
51: cr
52: then
53: loop
54: cr
55: ;
56:
57: : dump-apics
58: test-lapic
59: test-ioapic
60: ;
61:
62: \ tag: apic test utility
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.