diff packages/hal/arm/ebsa285/current/src/ebsa285_misc.c @ 143:6b5f480c6929 ecos-sw-2000-12-08

Merge from eCos master repository on 2000-12-08-02:09:36-GMT
author jlarmour
date Fri, 08 Dec 2000 03:30:06 +0000
parents 6ed91473a1cd
children d397fc472bcf
line wrap: on
line diff
--- a/packages/hal/arm/ebsa285/current/src/ebsa285_misc.c
+++ b/packages/hal/arm/ebsa285/current/src/ebsa285_misc.c
@@ -467,5 +467,20 @@ void hal_interrupt_set_level(int vector,
     // No interrupts are configurable on this hardware
 }
 
+#include CYGHWR_MEMORY_LAYOUT_H
+typedef void code_fun(void);
+void ebsa285_program_new_stack(void *func)
+{
+    register CYG_ADDRESS stack_ptr asm("sp");
+    register CYG_ADDRESS old_stack asm("r4");
+    register code_fun *new_func asm("r0");
+    old_stack = stack_ptr;
+    stack_ptr = CYGMEM_REGION_ram + CYGMEM_REGION_ram_SIZE - sizeof(CYG_ADDRESS);
+    new_func = (code_fun*)func;
+    new_func();
+    stack_ptr = old_stack;
+    return;
+}
+
 /*------------------------------------------------------------------------*/
 // EOF ebsa285_misc.c