| \ |
| \ ioapic and local apic tester |
| \ |
| \ Copyright (C) 2003 Stefan Reinauer |
| \ |
| \ See the file "COPYING" for further information about |
| \ the copyright and warranty status of this work. |
| \ |
| |
| hex |
| |
| fee00000 constant lapic_base |
| fec00000 constant ioapic_base |
| |
| : read_lapic ( regoffset -- value ) |
| lapic_base + l@ |
| ; |
| |
| : write_lapic ( value regoffset -- ) |
| lapic_base + l! |
| ; |
| |
| : read_ioapic ( regoffset -- low_value high_value ) |
| 2* 10 + dup |
| ioapic_base l! ioapic_base 4 cells + l@ |
| swap 1+ |
| ioapic_base l! ioapic_base 4 cells + l@ |
| ; |
| |
| : write_ioapic ( low high regoffset -- ) |
| 2* 10 + dup ( low high offs offs ) |
| ioapic_base l! rot ioapic_base 4 cells + l! ( high offs ) |
| 1+ |
| ioapic_base l! ioapic_base 4 cells + l! ( high offs ) |
| ; |
| |
| : test-lapic |
| s" Dumping local apic:" type cr |
| 3f0 0 do |
| i dup ( lapic_base + ) s" 0x" type . s" = 0x" type read_lapic space . |
| i 30 and 0= if cr then |
| 10 +loop |
| cr |
| ; |
| |
| : test-ioapic |
| s" Dumping io apic:" type cr |
| 17 0 do |
| i dup s" irq=" type . read_ioapic s" = 0x" type . s" ." type . |
| i 1 and 0<> if |
| cr |
| then |
| loop |
| cr |
| ; |
| |
| : dump-apics |
| test-lapic |
| test-ioapic |
| ; |
| |
| \ tag: apic test utility |