From f43b9a694d227c9a261ed599190d5341c8e8b30c Mon Sep 17 00:00:00 2001 From: patacongo Date: Sun, 18 Feb 2007 15:28:23 +0000 Subject: Fix problems in state restore logic git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/arch/c5471/src/up_schedulesigaction.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'nuttx/arch/c5471/src/up_schedulesigaction.c') diff --git a/nuttx/arch/c5471/src/up_schedulesigaction.c b/nuttx/arch/c5471/src/up_schedulesigaction.c index 7fa92e49f..4ea39bec2 100644 --- a/nuttx/arch/c5471/src/up_schedulesigaction.c +++ b/nuttx/arch/c5471/src/up_schedulesigaction.c @@ -138,15 +138,15 @@ void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver) */ tcb->xcp.sigdeliver = sigdeliver; - tcb->xcp.saved_lr = current_regs[JB_LR]; - tcb->xcp.saved_cpsr = current_regs[JB_CPSR]; + tcb->xcp.saved_pc = current_regs[REG_PC]; + tcb->xcp.saved_cpsr = current_regs[REG_CPSR]; /* Then set up to vector to the trampoline with interrupts * disabled */ - current_regs[JB_LR] = (uint32)up_sigdeliver; - current_regs[JB_CPSR] = SVC_MODE | I_BIT | F_BIT; + current_regs[REG_PC] = (uint32)up_sigdeliver; + current_regs[REG_CPSR] = SVC_MODE | I_BIT | F_BIT; /* And make sure that the saved context in the TCB * is the same as the interrupt return context. @@ -170,15 +170,15 @@ void up_schedule_sigaction(_TCB *tcb, sig_deliver_t sigdeliver) */ tcb->xcp.sigdeliver = sigdeliver; - tcb->xcp.saved_lr = tcb->xcp.regs[JB_LR]; - tcb->xcp.saved_cpsr = tcb->xcp.regs[JB_CPSR]; + tcb->xcp.saved_pc = tcb->xcp.regs[REG_PC]; + tcb->xcp.saved_cpsr = tcb->xcp.regs[REG_CPSR]; /* Then set up to vector to the trampoline with interrupts * disabled */ - tcb->xcp.regs[JB_LR] = (uint32)up_sigdeliver; - tcb->xcp.regs[JB_CPSR] = SVC_MODE | I_BIT | F_BIT; + tcb->xcp.regs[REG_PC] = (uint32)up_sigdeliver; + tcb->xcp.regs[REG_CPSR] = SVC_MODE | I_BIT | F_BIT; } irqrestore(flags); -- cgit v1.2.3