Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / board-qemu / slof / pci-capabilities.fs
diff --git a/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs b/qemu/roms/SLOF/board-qemu/slof/pci-capabilities.fs
new file mode 100644 (file)
index 0000000..ef8c7b0
--- /dev/null
@@ -0,0 +1,34 @@
+\ Set up all known capabilities for this board to the plugged devices
+
+: pci-msi-prop ( addr -- )
+    5 pci-cap-find          ( capaddr )
+    ?dup IF
+        2+ rtas-config-w@   ( msi-control )
+        1 rshift 7 and      ( msi-control:3:1 )
+
+        dup 6 < IF
+            1 swap lshift   ( vectors# )
+            encode-int " ibm,req#msi" property
+        ELSE
+            ." Invalid MSI vectors number " . cr
+        THEN
+    THEN
+;
+
+: pci-msix-prop ( addr -- )
+    11 pci-cap-find         ( capaddr )
+    ?dup IF
+        2+ rtas-config-w@   ( msix-control )
+        7ff and             ( msix-control:10:0 )
+        1+                  ( vectors# )
+        ?dup IF
+            encode-int " ibm,req#msi-x" property
+        THEN
+    THEN
+;
+
+: pci-set-capabilities ( config-addr -- )
+    dup pci-msi-prop
+    dup pci-msix-prop
+    drop
+;