|
|
1.1 ! root 1: \ pearpc specific initialization code ! 2: \ ! 3: \ Copyright (C) 2005 Stefan Reinauer ! 4: \ ! 5: \ This program is free software; you can redistribute it and/or ! 6: \ modify it under the terms of the GNU General Public License ! 7: \ as published by the Free Software Foundation ! 8: \ ! 9: ! 10: ! 11: \ ------------------------------------------------------------------------- ! 12: \ initialization ! 13: \ ------------------------------------------------------------------------- ! 14: ! 15: : make-openable ( path ) ! 16: find-dev if ! 17: begin ?dup while ! 18: \ install trivial open and close methods ! 19: dup active-package! is-open ! 20: parent ! 21: repeat ! 22: then ! 23: ; ! 24: ! 25: : preopen ( chosen-str node-path ) ! 26: 2dup make-openable ! 27: ! 28: " /chosen" find-device ! 29: open-dev ?dup if ! 30: encode-int 2swap property ! 31: else ! 32: 2drop ! 33: then ! 34: ; ! 35: ! 36: \ preopen device nodes (and store the ihandles under /chosen) ! 37: :noname ! 38: " rtc" " /pci/isa/rtc" preopen ! 39: " memory" " /memory" preopen ! 40: " mmu" " /cpu@0" preopen ! 41: \ " stdout" " /packages/terminal-emulator" preopen ! 42: " stdout" " /pci/pci6666,6666" preopen ! 43: " stdin" " /pci/via-cuda/adb" preopen ! 44: ! 45: ; SYSTEM-initializer ! 46: ! 47: ! 48: \ ------------------------------------------------------------------------- ! 49: \ device tree fixing ! 50: \ ------------------------------------------------------------------------- ! 51: ! 52: \ add decode-address methods ! 53: : (make-decodable) ( phandle -- ) ! 54: ! 55: dup " #address-cells" rot get-package-property 0= if ! 56: decode-int nip nip ! 57: over " decode-unit" rot find-method if 2drop else ! 58: ( save phandle ncells ) ! 59: ! 60: over active-package! ! 61: case ! 62: 1 of ['] parse-hex " decode-unit" is-xt-func endof ! 63: 3 of ! 64: " bus-range" active-package get-package-property 0= if ! 65: decode-int nip nip ! 66: ['] encode-unit-pci " encode-unit" is-xt-func ! 67: " decode-unit" is-func-begin ! 68: ['] (lit) , , ! 69: ['] decode-unit-pci-bus , ! 70: is-func-end ! 71: then ! 72: endof ! 73: endcase ! 74: then ! 75: then ! 76: drop ! 77: ; ! 78: ! 79: : init-pearpc-tree ( -- ) ! 80: active-package ! 81: ! 82: iterate-tree-begin ! 83: begin ?dup while ! 84: ! 85: dup (make-decodable) ! 86: ! 87: iterate-tree ! 88: repeat ! 89: ! 90: active-package! ! 91: ; ! 92: ! 93: \ use the tty interface if available ! 94: : activate-tty-interface ! 95: " /packages/terminal-emulator" find-dev if drop ! 96: " /pci/via-cuda/adb" " input-device" $setenv ! 97: " /pci/pci6666,6666" " output-device" $setenv ! 98: then ! 99: ; ! 100: ! 101: :noname ! 102: " keyboard" input ! 103: ; CONSOLE-IN-initializer ! 104: ! 105: ! 106: \ ------------------------------------------------------------------------- ! 107: \ pre-booting ! 108: \ ------------------------------------------------------------------------- ! 109: ! 110: : update-chosen ! 111: " /chosen" find-device ! 112: stdin @ encode-int " stdin" property ! 113: stdout @ encode-int " stdout" property ! 114: " /pci/isa/interrupt-controller" find-dev if encode-int " interrupt-controller" property then ! 115: device-end ! 116: ;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.