Mercurial > flash_v2
diff packages/hal/common/current/src/hal_stub.c @ 115:6ed91473a1cd ecos-sw-2000-08-21
Merge from eCos master repository on 2000-08-21-22:40:54-BST
| author | jlarmour |
|---|---|
| date | Fri, 25 Aug 2000 17:32:38 +0000 |
| parents | 02ea4320376c |
| children | 6bd9d475ed4b |
line wrap: on
line diff
--- a/packages/hal/common/current/src/hal_stub.c +++ b/packages/hal/common/current/src/hal_stub.c @@ -32,7 +32,7 @@ //#####DESCRIPTIONBEGIN#### // // Author(s): jskov (based on powerpc/cogent hal_stub.c) -// Contributors:jskov +// Contributors:jskov, dmoseley // Date: 1999-02-12 // Purpose: Helper functions for stub, specific to eCos HAL // Description: Parts of the GDB stub requirements are provided by @@ -64,9 +64,13 @@ #endif #ifdef USE_LONG_NAMES_FOR_ENUM_REGNAMES +#ifndef PC #define PC REG_PC +#endif +#ifndef SP #define SP REG_SP #endif +#endif //----------------------------------------------------------------------------- // Extra eCos data. @@ -77,6 +81,12 @@ 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 +// Register validity checking +#ifdef CYGHWR_REGISTER_VALIDITY_CHECKING +int registers_valid[NUMREGS]; +int *_registers_valid = registers_valid; +#endif + #ifndef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT // this should go away // Interrupt control. static volatile __PFI __interruptible_control; @@ -93,6 +103,15 @@ get_register (regnames_t reg) return _registers[reg]; } +#ifdef CYGHWR_REGISTER_VALIDITY_CHECKING +// Return the validity of register REG. +int +get_register_valid (regnames_t reg) +{ + return _registers_valid[reg]; +} +#endif + // Store VALUE in the register corresponding to WHICH in the exception // context. void @@ -351,7 +370,9 @@ cyg_hal_gdb_diag_putc(void* __ch_data, c CYGACC_COMM_IF_PUTC(*__chan, hex[(csum>>4)&0xF]); CYGACC_COMM_IF_PUTC(*__chan, hex[csum&0xF]); + nak: c1 = CYGACC_COMM_IF_GETC(*__chan); + if( c1 == '+' ) break; if( cyg_hal_is_break( &c1 , 1 ) ) { @@ -359,6 +380,7 @@ cyg_hal_gdb_diag_putc(void* __ch_data, c CYGACC_CALL_IF_CONSOLE_INTERRUPT_FLAG_SET(1); break; } + if( c1 != '-' ) goto nak; } pos = 0;
