[OpenBIOS] r609 - in trunk/openbios-devel: forth/system modules

svn at openbios.org svn at openbios.org
Thu Nov 12 02:11:04 CET 2009


Author: laurent
Date: 2009-11-12 02:11:04 +0100 (Thu, 12 Nov 2009)
New Revision: 609

Modified:
   trunk/openbios-devel/forth/system/ciface.fs
   trunk/openbios-devel/modules/client.c
Log:
Implement Client Interface method "test-method" defined in
"PowerPC Microprocessor CHRP binding", Chapter 10.5.2.

Signed-off-by: Laurent Vivier <Laurent at vivier.eu>


Modified: trunk/openbios-devel/forth/system/ciface.fs
===================================================================
--- trunk/openbios-devel/forth/system/ciface.fs	2009-11-12 00:57:32 UTC (rev 608)
+++ trunk/openbios-devel/forth/system/ciface.fs	2009-11-12 01:11:04 UTC (rev 609)
@@ -303,6 +303,18 @@
   outer-interpreter
 ;
 
+[IFDEF] CONFIG_PPC
+\ PowerPC Microprocessor CHRP binding
+\ 10.5.2. Client Interface
+
+( phandle cstring-method -- missing )
+
+: test-method
+	dup cstrlen rot
+	find-method 0= if -1 else drop 0 then
+;
+[THEN]
+
 finish-device
 device-end
 

Modified: trunk/openbios-devel/modules/client.c
===================================================================
--- trunk/openbios-devel/modules/client.c	2009-11-12 00:57:32 UTC (rev 608)
+++ trunk/openbios-devel/modules/client.c	2009-11-12 01:11:04 UTC (rev 609)
@@ -19,7 +19,7 @@
 #include "openbios/of.h"
 
 /* Uncomment to enable debug printout of client interface calls */
-//#define DEBUG_CIF
+#define DEBUG_CIF
 //#define DUMP_IO
 
 /* OF client interface. r3 points to the argument array. On return,
@@ -143,6 +143,9 @@
 		printk("enter()\n");
 	} else if (strcmp(pb->service, "exit") == 0) {
 		printk("exit()\n");
+	} else if (strcmp(pb->service, "test-method") == 0) {
+		printk("test-method(0x%08lx, \"%s\") = ",
+			pb->args[0], (char*)pb->args[1]);
 	} else {
 		printk("of_client_interface: %s ", pb->service );
 		for( i = 0; i < pb->nargs; i++ )
@@ -212,6 +215,8 @@
 		/* do nothing */
 	} else if (strcmp(pb->service, "exit") == 0) {
 		/* do nothing */
+	} else if (strcmp(pb->service, "test-method") == 0) {
+		printk("0x%08lx\n", pb->args[pb->nargs]);
 	} else {
 		printk("of_client_interface return:");
 		for (i = 0; i < pb->nret; i++) {




More information about the OpenBIOS mailing list