Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / board-js2x / slof / pci-aliases.fs
1 \ *****************************************************************************
2 \ * Copyright (c) 2004, 2008 IBM Corporation
3 \ * All rights reserved.
4 \ * This program and the accompanying materials
5 \ * are made available under the terms of the BSD License
6 \ * which accompanies this distribution, and is available at
7 \ * http://www.opensource.org/licenses/bsd-license.php
8 \ *
9 \ * Contributors:
10 \ *     IBM Corporation - initial implementation
11 \ ****************************************************************************/
12
13 \ Starting alias number for net devices after the onboard devices.
14 2 VALUE pci-net-num
15 \ Starting alias number for disks after the onboard devices.
16 0 VALUE pci-disk-num
17 \ Starting alias number for cdroms after the onboard devices.
18 0 VALUE pci-cdrom-num
19
20 \ define a new alias for this device
21 : pci-set-alias ( str-addr str-len num -- )
22         $cathex strdup       \ create alias name
23         get-node node>path   \ get path string
24         set-alias            \ and set the alias
25 ;
26
27 \ define a new net alias
28 : unknown-enet ( -- pci-net-num )
29         pci-net-num dup 1+ TO pci-net-num
30 ;
31 : pci-alias-net ( config-addr -- )
32         u3? IF
33                 pci-device-vec c@ CASE 
34                 2 OF pci-device-vec-len 1 >= IF  
35                                         pci-device-vec 1+ c@ CASE 
36                                                 1 OF dup pci-addr2fn 1 >= IF 1 ELSE 0 THEN  ENDOF 
37                                                 dup OF  unknown-enet ENDOF
38                                         ENDCASE
39                                 ELSE
40                                         unknown-enet
41                                 THEN
42                         ENDOF
43                         dup OF unknown-enet  ENDOF      
44                 ENDCASE
45         ELSE
46                 pci-device-vec c@ CASE 
47                 2 OF pci-device-vec-len 1 >= IF  
48                                         pci-device-vec 1+ c@ CASE 
49                                                 4 OF dup pci-addr2fn 1 >= IF 1 ELSE 0 THEN  ENDOF 
50                                                 dup OF  unknown-enet ENDOF
51                                         ENDCASE
52                                 ELSE
53                                         unknown-enet
54                                 THEN
55                         ENDOF
56                         dup OF unknown-enet  ENDOF      
57                 ENDCASE
58         THEN
59         swap drop                               \ forget the config address
60
61         s" net" rot pci-set-alias              \ create the alias
62 ;
63
64 \ define a new disk alias
65 : pci-alias-disk ( config-addr -- )
66         drop                                    \ forget the config address
67         pci-disk-num dup 1+ TO pci-disk-num     \ increase the pci-disk-num
68         s" disk" rot pci-set-alias              \ create the alias
69 ;
70 \ define a new cdrom alias
71 : pci-alias-cdrom ( config-addr -- )
72         drop                                    \ forget the config address
73         pci-cdrom-num dup 1+ TO pci-cdrom-num     \ increase the pci-cdrom-num
74         s" cdrom" rot pci-set-alias              \ create the alias
75 ;
76
77 \ define the alias for the calling device
78 : pci-alias ( config-addr -- )
79         dup pci-class@ 
80         10 rshift CASE
81                 01 OF   pci-alias-disk ENDOF
82                 02 OF   pci-alias-net  ENDOF
83                dup OF   drop           ENDOF
84         ENDCASE
85 ;