Annotation of qemu/roms/openbios/forth/util/pci.fs, revision 1.1

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: \   ;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.