|
|
1.1 root 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: ;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.