|
|
1.1 ! root 1: \ tag: PCI helper functions ! 2: \ ! 3: \ Copyright (C) 2003-2004 Stefan Reinauer ! 4: \ Copyright (C) 2003 Samuel Rydh ! 5: \ ! 6: \ See the file "COPYING" for further information about ! 7: \ the copyright and warranty status of this work. ! 8: \ ! 9: ! 10: \ simple set of words for pci access, these are not ! 11: \ compliant to the PCI bus binding of OpenFirmware. ! 12: ! 13: \ only forth ! 14: \ vocabulary pci ! 15: \ also pci definitions ! 16: ! 17: hex ! 18: ! 19: : busdevfn ( bus dev fn -- busdevfn ) ! 20: 7 and swap ! 21: 1f and 3 << or ( dev fn -- devfn ) ! 22: swap 8 << or ( bus devfn -- busdevfn ) ! 23: ; ! 24: ! 25: : config-command ( busdevfn reg -- reg addr ) ! 26: dup -rot ! 27: 3 invert and ! 28: swap 8 << or ! 29: 80000000 or ! 30: ; ! 31: ! 32: : pci-c@ ( busdevfn reg -- x ) ! 33: config-command ! 34: cf8 iol! ! 35: 3 and cfc + ! 36: ioc@ ! 37: ; ! 38: ! 39: : pci-w@ ( busdevfn reg -- x ) ! 40: config-command ! 41: cf8 iol! ! 42: 2 and cfc + iow@ ! 43: ; ! 44: ! 45: : pci-l@ ( busdevfn reg -- x ) ! 46: config-command ! 47: cf8 iol! ! 48: drop ! 49: cfc iol@ ! 50: ; ! 51: ! 52: : pci-c! ( busdevfn reg val -- ) ! 53: -rot config-command ! 54: cf8 iol! ! 55: 3 and cfc + ioc! ! 56: ; ! 57: ! 58: : pci-w! ( busdevfn reg val -- ) ! 59: -rot config-command ! 60: cf8 iol! ! 61: 2 and cfc + iow! ! 62: ; ! 63: ! 64: : pci-l! ( busdevfn reg val -- ) ! 65: -rot config-command ! 66: cf8 iol! ! 67: drop ! 68: cfc iol! ! 69: ; ! 70: ! 71: : dump-pci-device ( bus dev fn -- ) ! 72: 2 pick (.) type 3a emit over ! 73: (.) type 2e emit dup (.) type 20 emit 5b emit \ 0:18.0 [ ! 74: busdevfn >r ! 75: r@ 0 pci-w@ u. 2f emit r@ 2 pci-w@ u. 5d emit \ 1022/1100] ! 76: r> ! 77: \ now we iterate ! 78: 10 0 do ! 79: cr i todigit emit 30 emit 3a emit 20 emit ! 80: 10 0 do ! 81: dup i j 4 << or pci-c@ ! 82: dup 4 >> todigit emit f and todigit emit ! 83: 20 emit ! 84: loop ! 85: loop ! 86: drop ! 87: cr cr ! 88: ; ! 89: ! 90: \ : test-pci ! 91: \ 0 2 0 dump-pci-device ! 92: \ ;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.