Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / board-js2x / slof / pci-aliases.fs
diff --git a/qemu/roms/SLOF/board-js2x/slof/pci-aliases.fs b/qemu/roms/SLOF/board-js2x/slof/pci-aliases.fs
new file mode 100644 (file)
index 0000000..f017e4a
--- /dev/null
@@ -0,0 +1,85 @@
+\ *****************************************************************************
+\ * 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
+\ ****************************************************************************/
+
+\ Starting alias number for net devices after the onboard devices.
+2 VALUE pci-net-num
+\ Starting alias number for disks after the onboard devices.
+0 VALUE pci-disk-num
+\ Starting alias number for cdroms after the onboard devices.
+0 VALUE pci-cdrom-num
+
+\ define a new alias for this device
+: pci-set-alias ( str-addr str-len num -- )
+        $cathex strdup       \ create alias name
+        get-node node>path   \ get path string
+        set-alias            \ and set the alias
+;
+
+\ define a new net alias
+: unknown-enet ( -- pci-net-num )
+       pci-net-num dup 1+ TO pci-net-num
+;
+: pci-alias-net ( config-addr -- )
+       u3? IF
+               pci-device-vec c@ CASE 
+               2 OF pci-device-vec-len 1 >= IF  
+                                       pci-device-vec 1+ c@ CASE 
+                                               1 OF dup pci-addr2fn 1 >= IF 1 ELSE 0 THEN  ENDOF 
+                                               dup OF  unknown-enet ENDOF
+                                       ENDCASE
+                               ELSE
+                                       unknown-enet
+                               THEN
+                       ENDOF
+                       dup OF unknown-enet  ENDOF      
+               ENDCASE
+       ELSE
+               pci-device-vec c@ CASE 
+               2 OF pci-device-vec-len 1 >= IF  
+                                       pci-device-vec 1+ c@ CASE 
+                                               4 OF dup pci-addr2fn 1 >= IF 1 ELSE 0 THEN  ENDOF 
+                                               dup OF  unknown-enet ENDOF
+                                       ENDCASE
+                               ELSE
+                                       unknown-enet
+                               THEN
+                       ENDOF
+                       dup OF unknown-enet  ENDOF      
+               ENDCASE
+       THEN
+       swap drop                               \ forget the config address
+
+        s" net" rot pci-set-alias              \ create the alias
+;
+
+\ define a new disk alias
+: pci-alias-disk ( config-addr -- )
+        drop                                    \ forget the config address
+        pci-disk-num dup 1+ TO pci-disk-num     \ increase the pci-disk-num
+        s" disk" rot pci-set-alias              \ create the alias
+;
+\ define a new cdrom alias
+: pci-alias-cdrom ( config-addr -- )
+        drop                                    \ forget the config address
+        pci-cdrom-num dup 1+ TO pci-cdrom-num     \ increase the pci-cdrom-num
+        s" cdrom" rot pci-set-alias              \ create the alias
+;
+
+\ define the alias for the calling device
+: pci-alias ( config-addr -- )
+        dup pci-class@ 
+        10 rshift CASE
+                01 OF   pci-alias-disk ENDOF
+                02 OF   pci-alias-net  ENDOF
+               dup OF   drop           ENDOF
+        ENDCASE
+;