[openfirmware] [commit] r2917 - cpu/arm forth/kernel ofw/confvar ofw/core ofw/fs/ext2fs ofw/wifi
repository service
svn at openfirmware.info
Mon Mar 26 19:36:48 CEST 2012
Author: wmb
Date: Mon Mar 26 19:35:34 2012
New Revision: 2917
URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2917
Log:
Core - Converted config-int, chosen-int, chosen-value, and chosen-variable to cell size intead of explicit 32-bit. Those values often contain pointers that need the full width of the processors native cell size, and represent dynamically-determined information that does not need portability across processor types. Property values in the device description portion of the device tree remain as explicit 32-bit chunks. The OFW client library code needs to be changed accordingly, but has not yet been changed.
Modified:
cpu/arm/linux.fth
cpu/arm/loadmach.fth
forth/kernel/endian.fth
ofw/confvar/conftype.fth
ofw/confvar/nameval.fth
ofw/core/fdt.fth
ofw/core/ofwcore.fth
ofw/fs/ext2fs/recovery.fth
ofw/wifi/data.fth
Modified: cpu/arm/linux.fth
==============================================================================
--- cpu/arm/linux.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ cpu/arm/linux.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -126,8 +126,8 @@
\ dup to linux-memtop
to ramdisk-adr
- ramdisk-adr " linux,initrd-start" chosen-int-property
- ramdisk-adr /ramdisk + " linux,initrd-end" chosen-int-property
+ ramdisk-adr " linux,initrd-start" chosen-cell-property
+ ramdisk-adr /ramdisk + " linux,initrd-end" chosen-cell-property
;
: $load-ramdisk ( name$ -- )
0 to /ramdisk ( name$ )
Modified: cpu/arm/loadmach.fth
==============================================================================
--- cpu/arm/loadmach.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ cpu/arm/loadmach.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -13,8 +13,6 @@
fload ${BP}/cpu/arm/decompm.fth
-: be-l, ( l -- ) here 4 note-string allot be-l! ;
-
\needs $save-forth transient fload ${BP}/cpu/arm/savefort.fth resident
\ alias $save-forth $save-forth
Modified: forth/kernel/endian.fth
==============================================================================
--- forth/kernel/endian.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ forth/kernel/endian.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -28,13 +28,32 @@
[then]
: le-l, ( l -- ) here /l allot le-l! ;
+: be-l, ( l -- ) here /l allot be-l! ;
-64\ : le-x@ ( a -- l ) dup le-l@ swap la1+ le-l@ lxjoin ;
-64\ : be-x@ ( a -- l ) dup la1+ be-l@ swap be-l@ lxjoin ;
+[ifndef] /x
+8 constant /x
+[then]
+
+32\ : le-x@ ( adr -- d ) dup le-l@ swap la1+ le-l@ ;
+32\ : be-x@ ( adr -- d ) dup la1+ be-l@ swap be-l@ ;
+32\ : le-x! ( d adr -- ) tuck la1+ le-l! le-l! ;
+32\ : be-x! ( d adr -- ) tuck be-l! la1+ be-l! ;
+
+64\ : le-x@ ( a -- l ) dup le-l@ swap la1+ le-l@ lxjoin ;
+64\ : be-x@ ( a -- l ) dup la1+ be-l@ swap be-l@ lxjoin ;
64\ : le-x! ( l a -- ) >r xlsplit r@ la1+ le-l! r> le-l! ;
64\ : be-x! ( l a -- ) >r xlsplit r@ be-l! r> la1+ be-l! ;
-64\ : le-x, ( x -- ) here /x allot le-x! ;
-64\ : be-x, ( x -- ) here /x allot be-x! ;
+
+: le-x, ( x -- ) here /x allot le-x! ;
+: be-x, ( x -- ) here /x allot be-x! ;
+
+32\ alias be-n@ be-l@
+32\ alias be-n! be-l!
+32\ alias be-n, be-l,
+
+64\ alias be-n@ be-x@
+64\ alias be-n! be-x!
+64\ alias be-n, be-x,
\ LICENSE_BEGIN
\ Copyright (c) 2006 FirmWorks
Modified: ofw/confvar/conftype.fth
==============================================================================
--- ofw/confvar/conftype.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ ofw/confvar/conftype.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -124,7 +124,7 @@
;
headers
-: set-config-int-default ( n xt -- ) >body la1+ unaligned-! ;
+: set-config-int-default ( n xt -- ) >body na1+ unaligned-! ;
6 actions
action: ( apf -- n ) cv-int@ ;
@@ -132,7 +132,7 @@
action: ( apf -- adr ) cv-adr drop ;
action: ( n apf -- adr len ) drop (.d) ;
action: ( adr len apf -- n ) drop $>number ;
-action: ( apf -- n ) la1+ @ ;
+action: ( apf -- n ) na1+ @ ;
: config-int ( "name" default-value -- ) config-create use-actions , ;
: nodefault-int ( "name" -- ) 0 config-int nodefault ;
Modified: ofw/confvar/nameval.fth
==============================================================================
--- ofw/confvar/nameval.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ ofw/confvar/nameval.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -268,8 +268,6 @@
over - ( cv-adr cv-len )
;
-: config-adr ( apf -- adr ) l@ config-mem + ;
-
: (cv-flag@) ( apf -- flag ) cv-adr if >cv$ $>flag else @ 0<> then ;
: (cv-flag!) ( flag apf -- ) 2dup default-value? 2>r flag>$ 2r> put-env$ ;
Modified: ofw/core/fdt.fth
==============================================================================
--- ofw/core/fdt.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ ofw/core/fdt.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -155,8 +155,8 @@
[ifdef] notdef
\ This is redundant because the Linux kernel reserves the initrd explicitly,
\ independent of the reserve map (and it reserves the device tree blob too).
- " linux,initrd-start" get-chosen-int dup fdt h# 40 + be-l! ( start )
- " linux,initrd-end" get-chosen-int swap - ( length )
+ " linux,initrd-start" get-chosen-cell dup fdt h# 40 + be-l! ( start )
+ " linux,initrd-end" get-chosen-cell swap - ( length )
fdt h# 4c + be-l! ( start )
[then]
Modified: ofw/core/ofwcore.fth
==============================================================================
--- ofw/core/ofwcore.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ ofw/core/ofwcore.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -664,6 +664,13 @@
over be-l@ >r /l /string r> l->n
;
: get-encoded-int ( adr len -- n ) drop be-l@ ;
+
+: encode-cell ( n -- adr len ) here swap be-n, /n ;
+
+: decode-cell ( adr len -- adr' len' n )
+ over be-x@ >r /x /string r>
+;
+: get-encoded-cell ( adr len -- n ) drop be-n@ ;
headers
\ From devtree.fth
@@ -2936,9 +2943,9 @@
\ "chosen-variable" is a convenient way to report the contents of a
\ variable in a "/chosen" property. Example: stdout " stdout" chosen-variable
5 actions
-action: token@ execute @ encode-int over here - allot ; \ get
-action: token@ execute >r get-encoded-int r> ! ; \ set
-action: token@ execute ; \ addr
+action: token@ execute @ encode-cell over here - allot ; \ get
+action: token@ execute >r get-encoded-cell r> ! ; \ set
+action: token@ execute ; \ addr
action: drop ;
action: drop ;
@@ -2951,9 +2958,9 @@
\ "chosen-value" is like chosen-variable, but with value semantics
\ variable in a "/chosen" property. Example: stdout " stdout" chosen-variable
5 actions
-action: token@ execute encode-int over here - allot ; \ get
-action: token@ >r get-encoded-int r> 1 perform-action ; \ set
-action: token@ 2 perform-action ; \ addr
+action: token@ execute encode-cell over here - allot ; \ get
+action: token@ >r get-encoded-cell r> 1 perform-action ; \ set
+action: token@ 2 perform-action ; \ addr
action: drop ;
action: drop ;
@@ -3038,16 +3045,16 @@
dup if ihandle>phandle = else 2drop false then
;
-: chosen-int-property ( int name-str -- )
+: chosen-cell-property ( n name-str -- )
" /chosen" find-device
\ XXX this eats up some space every time it's called ...
- \ We really want an "set-encoded-int"
- rot encode-int 2swap (property)
+ \ We really want "set-encoded-cell"
+ rot encode-cell 2swap (property)
device-end
;
: set-stdin ( ihandle -- )
stdin @ swap stdin ! ( old-ihandle )
- stdin @ " stdin" chosen-int-property
+ stdin @ " stdin" chosen-cell-property
" install-abort" stdin @ $call-method ( old-ihandle )
?dup if ( old-ihandle )
@@ -3093,7 +3100,7 @@
-1 ( unknown-#lines )
else ( adr len )
\ Report the value of the "#lines" property
- get-encoded-int ( #lines )
+ get-encoded-cell ( #lines )
then ( #lines )
then ( #lines )
stdout-#lines !
@@ -3101,7 +3108,7 @@
: set-stdout ( ihandle -- )
stdout @ swap stdout ! ( old-ihandle )
?close
- stdout @ " stdout" chosen-int-property
+ stdout @ " stdout" chosen-cell-property
report-#lines
;
: output ( pathname-adr,len -- )
@@ -4462,7 +4469,7 @@
my-self if ( adr len )
my-voc (push-package) ( adr len )
" address" get-property 0= if ( adr len value-adr,len )
- get-encoded-int 2 pick = if ( adr len )
+ get-encoded-cell 2 pick = if ( adr len )
" address" delete-property ( adr len )
then ( adr len )
then ( adr len )
Modified: ofw/fs/ext2fs/recovery.fth
==============================================================================
--- ofw/fs/ext2fs/recovery.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ ofw/fs/ext2fs/recovery.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -354,7 +354,6 @@
next-commit-id 1+ to next-commit-id
;
-: be-x@ ( adr -- d ) dup la1+ be-l@ swap be-l@ ;
: do-revoke-block ( -- )
revoking? 0= if exit then
Modified: ofw/wifi/data.fth
==============================================================================
--- ofw/wifi/data.fth Mon Mar 26 19:29:01 2012 (r2916)
+++ ofw/wifi/data.fth Mon Mar 26 19:35:34 2012 (r2917)
@@ -177,8 +177,6 @@
: my-mac! ( adr -- ) wifi >my-mac /mac-adr move ;
: ssid$ ( -- $ ) wifi >ssid cscount ;
: ssid! ( $ -- ) /ssid 1- min wifi >ssid dup /ssid erase swap move ;
-32\ : be-x! ( d adr -- ) tuck be-l! la1+ be-l! ;
-32\ : be-x@ ( adr -- d ) dup la1+ be-l@ swap be-l@ ;
: last-rcnt@ ( -- d ) wifi >last-rcnt be-x@ ;
: last-rcnt! ( d -- ) wifi >last-rcnt be-x! ;
More information about the openfirmware
mailing list