diff packages/hal/common/current/src/hal_stub.c @ 191:678094f34118

Merge from eCos master repository on 2001-10-19-06:43:02-BST
author jlarmour
date Fri, 19 Oct 2001 07:02:26 +0000
parents 9160a8005d76
children 51b34619b677
line wrap: on
line diff
--- a/packages/hal/common/current/src/hal_stub.c
+++ b/packages/hal/common/current/src/hal_stub.c
@@ -75,12 +75,20 @@
 //-----------------------------------------------------------------------------
 // Extra eCos data.
 
+// Some architectures use registers of different sizes, so NUMREGS
+// alone is not suffucient to size the register save area. For those
+// architectures, HAL_STUB_REGISTERS_SIZE is defined as the number
+// of target_register_t sized elements in the register save area.
+#ifndef HAL_STUB_REGISTERS_SIZE
+#define HAL_STUB_REGISTERS_SIZE NUMREGS
+#endif
+
 // Saved registers.
 HAL_SavedRegisters *_hal_registers;
-target_register_t registers[NUMREGS];
-target_register_t alt_registers[NUMREGS] ;  // Thread or saved process state
-target_register_t * _registers = registers; // Pointer to current set of registers
-target_register_t orig_registers[NUMREGS];  // Registers to get back to original state
+target_register_t registers[HAL_STUB_REGISTERS_SIZE];
+target_register_t alt_registers[HAL_STUB_REGISTERS_SIZE] ;  // Thread or saved process state
+target_register_t * _registers = registers;                 // Pointer to current set of registers
+target_register_t orig_registers[HAL_STUB_REGISTERS_SIZE];  // Registers to get back to original state
 
 #if defined(HAL_STUB_HW_WATCHPOINT) || defined(HAL_STUB_HW_BREAKPOINT)
 static int  _hw_stop_reason;   // Reason we were stopped by hw.
@@ -116,6 +124,7 @@ static volatile __PFI __interruptible_co
 //-----------------------------------------------------------------------------
 // Register access
 
+#ifndef CYGARC_STUB_REGISTER_ACCESS_DEFINED
 // Return the currently-saved value corresponding to register REG of
 // the exception context.
 target_register_t 
@@ -123,6 +132,7 @@ get_register (regnames_t reg)
 {
     return _registers[reg];
 }
+#endif
 
 #ifdef CYGHWR_REGISTER_VALIDITY_CHECKING
 // Return the validity of register REG.
@@ -133,6 +143,7 @@ get_register_valid (regnames_t reg)
 }
 #endif
 
+#ifndef CYGARC_STUB_REGISTER_ACCESS_DEFINED
 // Store VALUE in the register corresponding to WHICH in the exception
 // context.
 void 
@@ -152,6 +163,7 @@ put_register (regnames_t which, target_r
 #endif    
     _registers[which] = value;
 }
+#endif // CYGARC_STUB_REGISTER_ACCESS_DEFINED
 
 //-----------------------------------------------------------------------------
 // Serial stuff