This patch is just a quick work up to see how to handle a particular
problem I've got.  The idea is that I want finer control over what happens
when I 'go' to piece of code.  The idea is it looks more like a native
function call than the current go which is more main() like.

The calling convention/num of args is specific to the PPC ABI.

I'm looking for suggestions, better names, etc.

thanks

- k

diff --git a/common/cmd_boot.c b/common/cmd_boot.c
index e68f16f..5b0bbe4 100644
--- a/common/cmd_boot.c
+++ b/common/cmd_boot.c
@@ -32,6 +32,42 @@
 DECLARE_GLOBAL_DATA_PTR;
 #endif

+int do_go_raw (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       ulong   addr, i;
+       ulong   r[8] = { 0 };
+
+       void    (*img)(ulong, ulong, ulong, ulong,
+                      ulong, ulong, ulong, ulong);
+
+       if ((argc < 2) || (argc > 9)) {
+               printf ("Usage:\n%s\n", cmdtp->usage);
+               return 1;
+       }
+
+       addr = simple_strtoul(argv[1], NULL, 16);
+
+       img = (void (*)(ulong, ulong, ulong, ulong,
+                       ulong, ulong, ulong, ulong)) addr;
+
+       for (i = 2; i < argc; i++)
+               r[i-2] = simple_strtoul(argv[i], NULL, 16);
+
+       (*img)(r[0], r[1], r[2], r[3], r[4], r[5], r[6], r[7]);
+       /* does not return */
+
+       return 0;
+}
+
+/* -------------------------------------------------------------------- */
+
+U_BOOT_CMD(
+       go_raw, CFG_MAXARGS, 1, do_go_raw,
+       "go_raw  - start application at address 'addr'\n",
+       "addr [arg ...]\n    - start application at address 'addr'\n"
+       "      passing 'arg' as arguments\n"
+);
+
 int do_go (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
        ulong   addr, rc;

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

Reply via email to