[OpenBIOS] [RFC] Pretty-print reg property
Andreas Färber
andreas.faerber at web.de
Tue Oct 5 01:22:09 CEST 2010
Executing .properties for, e.g., the /memory node would print the "reg" property
as a series of bytes.
Modify the .properties and (.property) words to special-case property display
based on property name. Visualize the "reg" format as a table.
Signed-off-by: Andreas Färber <andreas.faerber at web.de>
---
Hello,
This prettification was tested for qemu-ppc (#address-cells == 1 && #size-cells == 1)
with a local patch to fix the /memory reg property (uses 2 cells currently).
Is it permissible to modify the (.property) "signature" in this way?
Regards,
Andreas
forth/admin/devices.fs | 34 +++++++++++++++++++++++++++++++---
1 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/forth/admin/devices.fs b/forth/admin/devices.fs
index dbb4646..4c72cbb 100644
--- a/forth/admin/devices.fs
+++ b/forth/admin/devices.fs
@@ -289,9 +289,37 @@
2drop r> drop 1
;
+\ TODO honor #address-cells and #size-cells
+: (.p-reg) ( data len -- )
+ swap >r 0
+ begin 2dup > while
+ dup r@ + c@
+ ( len n ch )
+ pocket tohexstr dup 2 <> if ." 0" then type
+ 1+
+ dup 8 mod 4 = if
+ ." "
+ then
+ dup 8 mod 0 = if
+ 2dup <> if
+ cr 0 begin ." " 1+ dup d# 26 >= until drop
+ then
+ then
+ repeat
+ 2drop r> drop
+;
+
\ this function tries to heuristically determine the data format
-: (.property) ( data len -- )
- dup 0= if 2drop ." <empty>" exit then
+: (.property) ( name-str name-len data len -- )
+ dup 0= if 2drop 2drop ." <empty>" exit then
+
+ 2over
+ ( name-str name-len data len name-str name-len )
+ s" reg" strcmp 0= if (.p-reg) 2drop exit then
+ ( name-str name-len data len )
+ \ TODO this should be limited to /memory device
+ 2swap s" available" strcmp 0= if (.p-reg) exit then
+ ( data len )
.p-string? if exit then
.p-int? if exit then
@@ -307,7 +335,7 @@
while
cr 2dup dup -rot type
begin ." " 1+ dup d# 26 >= until drop
- 2dup active-package get-package-property drop (.property)
+ 2dup 2dup active-package get-package-property drop (.property)
repeat
then
r> drop
--
1.7.3
More information about the OpenBIOS
mailing list