| [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] |