diff packages/redboot/current/src/main.c @ 141:450e4e1f1e80 ecos-sw-2000-11-27

Merge from eCos master repository on 2000-11-27-23:09:27-GMT
author jlarmour
date Tue, 28 Nov 2000 00:03:34 +0000
parents 289bf90c6a9b
children 6b5f480c6929
line wrap: on
line diff
--- a/packages/redboot/current/src/main.c
+++ b/packages/redboot/current/src/main.c
@@ -93,6 +93,10 @@ CYG_HAL_TABLE_BEGIN( __RedBoot_CMD_TAB__
 CYG_HAL_TABLE_END( __RedBoot_CMD_TAB_END__, RedBoot_commands );
 extern struct cmd __RedBoot_CMD_TAB__[], __RedBoot_CMD_TAB_END__;
 
+#ifdef HAL_ARCH_PROGRAM_NEW_STACK
+extern void HAL_ARCH_PROGRAM_NEW_STACK(void *fun);
+#endif
+
 void
 do_version(int argc, char *argv[])
 {
@@ -172,7 +176,11 @@ cyg_start(void)
             if (res == 0) {
                 // Special case of '$' - need to start GDB protocol
                 CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
+#ifdef HAL_ARCH_PROGRAM_NEW_STACK
+                HAL_ARCH_PROGRAM_NEW_STACK(breakpoint);
+#else
                 breakpoint();  // Get GDB stubs started, with a proper environment, etc.
+#endif
             } else {
                 if (strlen(line) > 0) {
                     if ((cmd = parse(line, &argc, &argv[0])) != (struct cmd *)0) {
@@ -288,7 +296,11 @@ do_go(int argc, char *argv[])
     HAL_DCACHE_SYNC();
     HAL_ICACHE_INVALIDATE_ALL();
     HAL_DCACHE_INVALIDATE_ALL();
+#ifdef HAL_ARCH_PROGRAM_NEW_STACK
+    HAL_ARCH_PROGRAM_NEW_STACK(fun);
+#else
     (*fun)();
+#endif
 }
 
 //