Annotation of qemu/roms/openbios/forth/device/extra.fs, revision 1.1.1.1

1.1       root        1: \ tag: Useful device related functions
                      2: \ 
                      3: \ Copyright (C) 2003, 2004 Samuel Rydh
                      4: \ 
                      5: \ See the file "COPYING" for further information about
                      6: \ the copyright and warranty status of this work.
                      7: \ 
                      8: 
                      9: 
                     10: : parent ( phandle -- parent.phandle|0 )
                     11:   >dn.parent @
                     12: ;
                     13: 
                     14: \ -------------------------------------------------------------------
                     15: \ property helpers
                     16: \ -------------------------------------------------------------------
                     17: 
                     18: : int-property ( value name-str name-len -- )
                     19:        rot encode-int 2swap property
                     20: ;
                     21: 
                     22: \ -------------------------------------------------------------------------
                     23: \ property utils
                     24: \ -------------------------------------------------------------------------
                     25: 
                     26: \ like property (except it takes a phandle as an argument)
                     27: : encode-property ( buf len propname propname-len phandle -- )
                     28:        dup 0= abort" null phandle"
                     29: 
                     30:   my-self >r 0 to my-self
                     31:   active-package >r active-package!
                     32: 
                     33:   property
                     34: 
                     35:   r> active-package!
                     36:   r> to my-self
                     37: ;
                     38: 
                     39: \ -------------------------------------------------------------------
                     40: \ device tree iteration
                     41: \ -------------------------------------------------------------------
                     42: 
                     43: : iterate-tree ( phandle -- phandle|0 )
                     44:   ?dup 0= if device-tree @ exit then
                     45: 
                     46:   \ children first
                     47:   dup child if
                     48:     child exit
                     49:   then
                     50: 
                     51:   \ then peers
                     52:   dup peer if
                     53:     peer exit
                     54:   then
                     55: 
                     56:   \ then peer of a parent
                     57:   begin >dn.parent @ dup while
                     58:     dup peer if peer exit then
                     59:   repeat
                     60: ;
                     61: 
                     62: : iterate-tree-begin ( -- first_node )
                     63:   device-tree @
                     64: ;
                     65: 
                     66: 
                     67: \ -------------------------------------------------------------------
                     68: \ device tree iteration
                     69: \ -------------------------------------------------------------------
                     70: 
                     71: : iterate-device-type ( lastph|0 type-str type-len -- 0|nextph )
                     72:   rot
                     73:   begin iterate-tree ?dup while
                     74:     >r
                     75:     2dup " device_type" r@ get-package-property if 0 0 then
                     76:     dup 0> if 1- then
                     77:     strcmp 0= if 2drop r> exit then
                     78:     r>
                     79:   repeat
                     80:   2drop 0
                     81: ;
                     82: 
                     83: \ -------------------------------------------------------------------
                     84: \ device tree "cut and paste"
                     85: \ -------------------------------------------------------------------
                     86: 
                     87: \ add a subtree to the current device node
                     88: : link-nodes ( phandle -- )
                     89:   \ reparent phandle and peers
                     90:   dup begin ?dup while
                     91:     dup >dn.parent active-package !
                     92:     >dn.peer @
                     93:   repeat
                     94: 
                     95:   \ add to list of children
                     96:   active-package >dn.child
                     97:   begin dup @ while @ >dn.peer repeat dup . !
                     98: ;
                     99: 
                    100: : link-node ( phandle -- )
                    101:   0 over >dn.peer !
                    102:   link-nodes
                    103: ;

unix.superglobalmegacorp.com

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