This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
arm svc_lr saved when exception may be corruped
- From: "wyb" <wyb at topsec dot com dot cn>
- To: <ecos-discuss at sources dot redhat dot com>
- Date: Wed, 26 May 2004 10:26:28 +0800
- Subject: [ECOS] arm svc_lr saved when exception may be corruped
in arm vector.S:
......
call_exception_handler:
......
mov r5,sp // save original svc sp
mov r4,lr // and original svc lr
#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
// Make sure we use the GDB stack.
ldr sp,.__GDB_stack
cmp r5,sp // already on GDB stack?
bhi 10f
ldr r4,.__GDB_stack_base
cmp r5,r4
movhi sp,r5
10:
#endif
//
// r5 holds original svc sp, current sp is stack to use
// r4 holds original svc lr, which must also be preserved
//
stmfd sp!,{r0-r2,r4,r5} // push svc_sp, svc_lr, vector, psr,
pc
my question is: when CYGDBG_HAL_DEBUG_GDB_INCLUDE_SUBS is defined, then the
r4 saved in the last line has been changed to __GDB_stack_base, not the
svc_lr. Is it a BUG ?
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss