[OpenBIOS] r501 - trunk/openbios-devel/modules

svn at openbios.org svn at openbios.org
Sat Jun 6 11:58:11 CEST 2009


Author: blueswirl
Date: 2009-06-06 11:58:11 +0200 (Sat, 06 Jun 2009)
New Revision: 501

Modified:
   trunk/openbios-devel/modules/client.c
Log:
Improve client interface debugging

Modified: trunk/openbios-devel/modules/client.c
===================================================================
--- trunk/openbios-devel/modules/client.c	2009-05-30 07:43:58 UTC (rev 500)
+++ trunk/openbios-devel/modules/client.c	2009-06-06 09:58:11 UTC (rev 501)
@@ -18,6 +18,9 @@
 #include "openbios/bindings.h"
 #include "openbios/of.h"
 
+/* Uncomment to enable debug printout of client interface calls */
+//#define DEBUG_CIF
+
 /* OF client interface. r3 points to the argument array. On return,
  * r3 should contain 0==true or -1==false. r4-r12,cr0,cr1 may
  * be modified freely.
@@ -39,8 +42,12 @@
 handle_calls( prom_args_t *pb )
 {
 	int i, dstacksave = dstackcnt;
+        long val;
 
-	/* printk("%s ([%d] -- [%d])\n", pb->service, pb->nargs, pb->nret ); */
+#ifdef DEBUG_CIF
+        printk("%s %s ([%ld] -- [%ld])\n", pb->service, (char *)pb->args[0],
+               pb->nargs, pb->nret);
+#endif
 
 	for( i=pb->nargs-1; i>=0; i-- )
 		PUSH( pb->args[i] );
@@ -49,21 +56,26 @@
 	fword("client-call-iface");
 
 	for( i=0; i<pb->nret && dstackcnt > dstacksave; i++ ) {
-		int val = POP();
+                val = POP();
 		pb->args[pb->nargs + i] = val;
 
 		/* don't pop args if an exception occured */
 		if( !i && val )
 			break;
 	}
-#if 0
+#ifdef DEBUG_CIF
 	/* useful for debug but not necessarily an error */
 	if( i != pb->nret || dstacksave != dstacksave ) {
-		printk("%s '%s': possible argument error (%d--%d) got %d\n",
+                printk("%s '%s': possible argument error (%ld--%ld) got %d\n",
 		       pb->service, (char*)pb->args[0], pb->nargs-2, pb->nret, i );
 	}
+
+        printk("handle_calls return: ");
+        for (i = 0; i < pb->nret; i++) {
+            printk("%lx ", pb->args[pb->nargs + i]);
+        }
+        printk("\n");
 #endif
-
 	dstackcnt = dstacksave;
 	return 0;
 }
@@ -76,7 +88,7 @@
 
 	if( pb->nargs < 0 || pb->nret < 0 )
 		return -1;
-#if 0
+#ifdef DEBUG_CIF
 	printk("of_client_interface: %s ", pb->service );
 	for( i=0; i<pb->nargs; i++ )
 		printk("%lx ", pb->args[i] );
@@ -105,10 +117,18 @@
 	for( i=0; i<pb->nret && dstackcnt > dstacksave ; i++ )
 		pb->args[pb->nargs + i] = POP();
 
+#ifdef DEBUG_CIF
 	if( i != pb->nret || dstackcnt != dstacksave ) {
 		printk("service %s: argument count error (%d %d)\n",
 		       pb->service, i, dstackcnt - dstacksave );
 		dstackcnt = dstacksave;
 	}
+
+        printk("of_client_interface return:");
+        for (i = 0; i < pb->nret; i++) {
+            printk("%lx ", pb->args[pb->nargs + i]);
+        }
+        printk("\n");
+#endif
 	return 0;
 }




More information about the OpenBIOS mailing list