File: pci.fs

package info (click to toggle)
openbios 1.1.git20161120-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 5,120 kB
  • ctags: 13,545
  • sloc: ansic: 63,915; asm: 3,530; xml: 1,145; cpp: 414; sh: 388; makefile: 234
file content (40 lines) | stat: -rw-r--r-- 859 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[IFDEF] CONFIG_DRIVER_PCI

: pci-addr-encode ( addr.lo addr.mi addr.hi )
  rot >r swap >r 
  encode-int 
  r> encode-int encode+ 
  r> encode-int encode+
  ;
 
: pci-len-encode ( len.lo len.hi )
  encode-int 
  rot encode-int encode+ 
  ;

\ Get PCI physical address and size for configured BAR reg
: pci-bar>pci-addr ( bar-reg -- addr.lo addr.mid addr.hi size -1 | 0 )
  " assigned-addresses" active-package get-package-property 0= if
    begin
      decode-phys    \ ( reg prop prop-len phys.lo phys.mid phys.hi )
      dup ff and 6 pick = if
        >r >r >r rot drop
        decode-int drop decode-int
        -rot 2drop
        r> swap r> r> rot
        -1 exit
      else
        3drop
      then
      \ Drop the size as we don't need it
      decode-int drop decode-int drop
      dup 0=
    until
    3drop
    0 exit
  else
    0
  then
  ;

[THEN]