Changeset 48816d7 in rtems
- Timestamp:
- Nov 2, 2007, 1:35:02 PM (13 years ago)
- Branches:
- 4.10, 4.11, 4.9, 5, master
- Children:
- 137c410
- Parents:
- 7cb1d6ea
- Location:
- cpukit
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
cpukit/ChangeLog
r7cb1d6ea r48816d7 1 2007-11-02 Joel Sherrill <joel.sherrill@OARcorp.com> 2 3 * score/cpu/sparc/cpu.c, score/cpu/sparc/rtems/score/cpu.h, 4 score/include/rtems/score/context.h, score/src/threadhandler.c: Fix 5 stack so gdb backtrace does not print corrupted frame message after 6 _Thread_Handler. Daniel Hellstrom <daniel@gaisler.com> provided the 7 SPARC implementation and I made it more general. 8 1 9 2007-10-26 Glenn Humphrey <glenn.humphrey@OARcorp.com> 2 10 -
cpukit/score/cpu/sparc/cpu.c
r7cb1d6ea r48816d7 2 2 * SPARC Dependent Source 3 3 * 4 * COPYRIGHT (c) 1989- 1999.4 * COPYRIGHT (c) 1989-2007. 5 5 * On-Line Applications Research Corporation (OAR). 6 6 * … … 302 302 the_context->o7 = ((uint32_t ) entry_point) - 8; 303 303 the_context->o6_sp = stack_high - CPU_MINIMUM_STACK_FRAME_SIZE; 304 the_context->i6_fp = stack_high;304 the_context->i6_fp = 0; 305 305 306 306 /* -
cpukit/score/cpu/sparc/rtems/score/cpu.h
r7cb1d6ea r48816d7 792 792 793 793 /* 794 * This macro is invoked from _Thread_Handler to do whatever CPU 795 * specific magic is required that must be done in the context of 796 * the thread when it starts. 797 * 798 * On the SPARC, this is setting the frame pointer so GDB is happy. 799 * Make GDB stop unwinding at _Thread_Handler, previous register window 800 * Frame pointer is 0 and calling address must be a function with starting 801 * with a SAVE instruction. If return address is leaf-function (no SAVE) 802 * GDB will not look at prev reg window fp. 803 * 804 * _Thread_Handler is known to start with SAVE. 805 */ 806 807 #define _CPU_Context_Initialization_at_thread_begin() \ 808 do { \ 809 asm volatile ("set _Thread_Handler,%%i7\n"::); \ 810 } while (0) 811 812 /* 794 813 * This routine is responsible for somehow restarting the currently 795 814 * executing task. -
cpukit/score/include/rtems/score/context.h
r7cb1d6ea r48816d7 68 68 #define _Context_Initialize(_the_context, _stack, _size, _isr, _entry, _is_fp) \ 69 69 _CPU_Context_Initialize( _the_context, _stack, _size, _isr, _entry, _is_fp ) 70 71 /** 72 * This macro is invoked from _Thread_Handler to do whatever CPU 73 * specific magic is required that must be done in the context of 74 * the thread when it starts. 75 * 76 * If the CPU architecture does not require any magic, then this 77 * macro is empty. 78 */ 79 80 #if defined(_CPU_Context_Initialization_at_thread_begin) 81 #define _Context_Initialization_at_thread_begin() \ 82 _CPU_Context_Initialization_at_thread_begin() 83 #else 84 #define _Context_Initialization_at_thread_begin() 85 #endif 70 86 71 87 /** -
cpukit/score/src/threadhandler.c
r7cb1d6ea r48816d7 75 75 76 76 executing = _Thread_Executing; 77 78 /* 79 * Some CPUs need to tinker with the call frame or registers when the 80 * thread actually begins to execute for the first time. This is a 81 * hook point where the port gets a shot at doing whatever it requires. 82 */ 83 _Context_Initialization_at_thread_begin(); 77 84 78 85 /*
Note: See TracChangeset
for help on using the changeset viewer.