Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / board-js2x / slof / ioapic.fs
diff --git a/qemu/roms/SLOF/board-js2x/slof/ioapic.fs b/qemu/roms/SLOF/board-js2x/slof/ioapic.fs
new file mode 100644 (file)
index 0000000..685d6df
--- /dev/null
@@ -0,0 +1,36 @@
+\ *****************************************************************************
+\ * Copyright (c) 2004, 2008 IBM Corporation
+\ * All rights reserved.
+\ * This program and the accompanying materials
+\ * are made available under the terms of the BSD License
+\ * which accompanies this distribution, and is available at
+\ * http://www.opensource.org/licenses/bsd-license.php
+\ *
+\ * Contributors:
+\ *     IBM Corporation - initial implementation
+\ ****************************************************************************/
+
+\ ( ioapic-addr -- )
+\ IO-APIC setup.
+
+CONSTANT ioapic
+
+: ioapic@  ( offset -- x )  ioapic rb! ioapic 10 + rl@-le ;
+: ioapic!  ( x offset -- )  ioapic rb! ioapic 10 + rl!-le ;
+
+: init-ioapic  ( irq# -- )
+   1a000 or 1 ioapic@ 10 rshift 1+ 0  ?DO
+      0 i 2* 11 + ioapic! dup
+      \ move all ISA IRQs to 40 and higher,
+      \ as to not conflict with U3/U4 internal
+      \ IRQs. ISA IRQs are positive edge.
+      dup ff and 0c <  IF  a000 - 40 +  THEN
+      i 2* 10 + ioapic! 1+  LOOP  drop
+;
+
+: dump-ioapic  ( -- )
+   1 ioapic@ 10 rshift 1+
+   dup cr . ." irqs" 0  ?DO
+      cr i 2 0.r space i 2* 11 + ioapic@ 8 0.r
+      i 2* 10 + ioapic@ 8 0.r  LOOP
+;