diff options
Diffstat (limited to 'qemu/roms/openbios/forth/admin/nvram.fs')
-rw-r--r-- | qemu/roms/openbios/forth/admin/nvram.fs | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/qemu/roms/openbios/forth/admin/nvram.fs b/qemu/roms/openbios/forth/admin/nvram.fs deleted file mode 100644 index 20f6462b9..000000000 --- a/qemu/roms/openbios/forth/admin/nvram.fs +++ /dev/null @@ -1,385 +0,0 @@ -\ tag: nvram config handling -\ -\ this code implements IEEE 1275-1994 -\ -\ Copyright (C) 2003, 2004 Samuel Rydh -\ -\ See the file "COPYING" for further information about -\ the copyright and warranty status of this work. -\ - -struct ( config ) - 2 cells field >cf.name - 2 cells field >cf.default \ 0 -1 if no default - /n field >cf.check-xt - /n field >cf.exec-xt - /n field >cf.next -constant config-info.size - -0 value config-root - -\ -------------------------------------------------------- -\ config handling -\ -------------------------------------------------------- - -: find-config ( name-str len -- 0|configptr ) - config-root - begin ?dup while - -rot - 2dup 4 pick >cf.name 2@ - strcmp 0= if - 2drop exit - then - rot >cf.next @ - repeat - 2drop 0 -; - -: is-config-word ( configp -- ) - dup >cf.name 2@ $create , - does> @ - dup >cf.name 2@ - s" /options" find-dev if - get-package-property if 0 -1 then - ( configp prop-str prop-len ) - \ drop trailing zero - ?dup if 1- then - else - 2drop 0 -1 - then - \ use default value if property is missing - dup 0< if 2drop dup >cf.default 2@ then - \ no default value, use empty string - dup 0< if 2drop 0 0 then - - rot >cf.exec-xt @ execute -; - -: new-config ( name-str name-len -- configp ) - 2dup find-config ?dup if - nip nip - 0 0 2 pick >cf.default 2! - else - dict-strdup - here config-info.size allot - dup config-info.size 0 fill - config-root over >cf.next ! - dup to config-root - dup >r >cf.name 2! r> - dup is-config-word - then - ( configp ) -; - -: config-default ( str len configp -- ) - -rot - dup 0> if dict-strdup then - rot >cf.default 2! -; - -: no-conf-def ( configp -- ) - 0 -1 -; - -\ -------------------------------------------------------- -\ config types -\ -------------------------------------------------------- - -: exec-str-conf ( str len -- str len ) - \ trivial -; -: check-str-conf ( str len -- str len valid? ) - \ nothing - true -; - -: str-config ( def-str len name len -- configp ) - new-config >r - ['] exec-str-conf r@ >cf.exec-xt ! - ['] check-str-conf r@ >cf.check-xt ! - r> config-default -; - -\ ------------------------------------------------------------ - -: exec-int-conf ( str len -- value ) - \ fixme - parse-hex -; -: check-int-conf ( str len -- str len valid? ) - true -; - -: int-config ( def-str len name len -- configp ) - new-config >r - ['] exec-int-conf r@ >cf.exec-xt ! - ['] check-int-conf r@ >cf.check-xt ! - r> config-default -; - -\ ------------------------------------------------------------ - -: exec-secmode-conf ( str len -- n ) - 2dup s" command" strcmp 0= if 2drop 1 exit then - 2dup s" full" strcmp 0= if 2drop 2 exit then - 2drop 0 -; -: check-secmode-conf ( str len -- str len valid? ) - 2dup s" none" strcmp 0= if true exit then - 2dup s" command" strcmp 0= if true exit then - 2dup s" full" strcmp 0= if true exit then - false -; - -: secmode-config ( def-str len name len -- configp ) - new-config >r - ['] exec-secmode-conf r@ >cf.exec-xt ! - ['] check-secmode-conf r@ >cf.check-xt ! - r> config-default -; - -\ ------------------------------------------------------------ - -: exec-bool-conf ( str len -- value ) - 2dup s" true" strcmp 0= if 2drop true exit then - 2dup s" false" strcmp 0= if 2drop false exit then - 2dup s" TRUE" strcmp 0= if 2drop false exit then - 2dup s" FALSE" strcmp 0= if 2drop false exit then - parse-hex 0<> -; - -: check-bool-conf ( name len -- str len valid? ) - 2dup s" true" strcmp 0= if true exit then - 2dup s" false" strcmp 0= if true exit then - 2dup s" TRUE" strcmp 0= if 2drop s" true" true exit then - 2dup s" FALSE" strcmp 0= if 2drop s" false" true exit then - false -; - -: bool-config ( configp -- configp ) - new-config >r - ['] exec-bool-conf r@ >cf.exec-xt ! - ['] check-bool-conf r@ >cf.check-xt ! - r> config-default -; - - -\ -------------------------------------------------------- -\ 7.4.4 Nonvolatile memory -\ -------------------------------------------------------- - -: $setenv ( data-addr data-len name-str name-len -- ) - 2dup find-config ?dup if - >r 2swap r> - ( name len data len configptr ) - >cf.check-xt @ execute - 0= abort" Invalid value." - 2swap - else - \ create string config type - 2dup no-conf-def 2swap str-config - then - - 2swap encode-string 2swap - s" /options" find-package drop - encode-property -; - -: setenv ( "nv-param< >new-value<eol>" -- ) - parse-word - \ XXX drop blanks - dup if linefeed parse else 0 0 then - - dup 0= abort" Invalid value." - 2swap $setenv -; - -: printenv ( "{param-name}<eol>" -- ) - \ XXX temporary implementation - linefeed parse 2drop - - active-package - s" /options" find-device - .properties - active-package! -; - -: (set-default) ( configptr -- ) - dup >cf.default 2@ dup 0>= if - rot >cf.name 2@ $setenv - else - \ no default value - 3drop - then -; - -: set-default ( "param-name<eol>" -- ) - linefeed parse - find-config ?dup if - (set-default) - else - ." No such parameter." -2 throw - then -; - -: set-defaults ( -- ) - config-root - begin ?dup while - dup (set-default) - >cf.next @ - repeat -; - -( maxlen "new-name< >" -- ) ( E: -- addr len ) -: nodefault-bytes - ; - - -\ -------------------------------------------------------- -\ initialize config from nvram -\ -------------------------------------------------------- - -\ CHRP format (array of null-terminated strings, "variable=value") -: nvram-load-configs ( data len -- ) - \ XXX: no len checking performed... - drop - begin dup c@ while - ( data ) - dup cstrlen 2dup + 1+ -rot - ( next str len ) - ascii = left-split ( next val len name str ) - ['] $setenv catch if - 2drop 2drop - then - repeat drop -; - -: (nvram-store-one) ( buf len str len -- buf len success? ) - swap >r - 2dup < if r> 2drop 2drop false exit then - ( buf len strlen R: str ) - swap over - r> swap >r -rot - ( str buf strlen R: res_len ) - 2dup + >r move r> r> true -; - -: (make-configstr) ( configptr ph -- str len ) - >r - >cf.name 2@ - 2dup r> get-package-property if - 2drop 0 0 exit - else - dup if 1- then - then - ( name len value-str len ) - 2swap s" =" 2swap - pocket tmpstrcat tmpstrcat drop - 2dup + 0 swap c! - 1+ -; - -: nvram-store-configs ( data len -- ) - 2 - \ make room for two trailing zeros - - s" /options" find-dev 0= if 2drop exit then - >r - config-root - ( data len configptr R: phandle ) - begin ?dup while - r@ over >r (make-configstr) - ( buf len val len R: configptr phandle ) - (nvram-store-one) drop - r> >cf.next @ - repeat - \ null terminate - 2 + 0 fill - r> drop -; - - -\ -------------------------------------------------------- -\ NVRAM variables -\ -------------------------------------------------------- -\ fcode-debug? input-device output-device -s" true" s" auto-boot?" bool-config \ 7.4.3.5 -s" boot" s" boot-command" str-config \ 7.4.3.5 -s" " s" boot-file" str-config \ 7.4.3.5 -s" false" s" diag-switch?" bool-config \ 7.4.3.5 -no-conf-def s" diag-device" str-config \ 7.4.3.5 -no-conf-def s" diag-file" str-config \ 7.4.3.5 -s" false" s" fcode-debug?" bool-config \ 7.7 -s" " s" nvramrc" str-config \ 7.4.4.2 -s" false" s" oem-banner?" bool-config -s" " s" oem-banner" str-config -s" false" s" oem-logo?" bool-config -no-conf-def s" oem-logo" str-config -s" false" s" use-nvramrc?" bool-config \ 7.4.4.2 -s" keyboard" s" input-device" str-config \ 7.4.5 -s" screen" s" output-device" str-config \ 7.4.5 -s" 80" s" screen-#columns" int-config \ 7.4.5 -s" 24" s" screen-#rows" int-config \ 7.4.5 -s" 0" s" selftest-#megs" int-config -no-conf-def s" security-mode" secmode-config - -\ --- devices --- -s" -1" s" pci-probe-mask" int-config -s" false" s" default-mac-address" bool-config -s" false" s" skip-netboot?" bool-config -s" true" s" scroll-lock" bool-config - -[IFDEF] CONFIG_PPC -\ ---- PPC ---- -s" false" s" little-endian?" bool-config -s" false" s" real-mode?" bool-config -s" -1" s" real-base" int-config -s" -1" s" real-size" int-config -s" 4000000" s" load-base" int-config -s" -1" s" virt-base" int-config -s" -1" s" virt-size" int-config -[THEN] - -[IFDEF] CONFIG_X86 -\ ---- X86 ---- -s" true" s" little-endian?" bool-config -[THEN] - -[IFDEF] CONFIG_SPARC32 -\ ---- SPARC32 ---- -s" 4000" s" load-base" int-config -s" true" s" tpe-link-test?" bool-config -s" 9600,8,n,1,-" s" ttya-mode" str-config -s" true" s" ttya-ignore-cd" bool-config -s" false" s" ttya-rts-dtr-off" bool-config -s" 9600,8,n,1,-" s" ttyb-mode" str-config -s" true" s" ttyb-ignore-cd" bool-config -s" false" s" ttyb-rts-dtr-off" bool-config -[THEN] - -[IFDEF] CONFIG_SPARC64 -\ ---- SPARC64 ---- -s" 4000" s" load-base" int-config -s" false" s" little-endian?" bool-config -[THEN] - -\ --- ??? --- -s" " s" boot-screen" str-config -s" " s" boot-script" str-config -s" false" s" use-generic?" bool-config -s" disk" s" boot-device" str-config \ 7.4.3.5 -s" " s" boot-args" str-config \ ??? - -\ defers -['] fcode-debug? to _fcode-debug? -['] diag-switch? to _diag-switch? - -\ Hack for load-base: it seems that some Sun bootloaders try -\ and execute "<value> to load-base" which will only work if -\ load-base is value. Hence we redefine load-base here as a -\ value using its normal default. -[IFDEF] CONFIG_SPARC64 -load-base value load-base -[THEN] - -: release-load-area - drop -; |