From 7b736063004bf65445afaad26e9b9acee01daaba Mon Sep 17 00:00:00 2001 From: "chao.an" Date: Wed, 23 Mar 2022 13:13:03 +0800 Subject: [PATCH] arm/schedulesigaction: update the SP to signal context top Signed-off-by: chao.an --- arch/arm/src/arm/arm_schedulesigaction.c | 18 ++++---- arch/arm/src/armv6-m/arm_schedulesigaction.c | 45 +++++++++++--------- arch/arm/src/armv7-a/arm_schedulesigaction.c | 45 +++++++++++--------- arch/arm/src/armv7-m/arm_schedulesigaction.c | 45 +++++++++++--------- arch/arm/src/armv7-r/arm_schedulesigaction.c | 18 ++++---- arch/arm/src/armv8-m/arm_schedulesigaction.c | 45 +++++++++++--------- 6 files changed, 120 insertions(+), 96 deletions(-) diff --git a/arch/arm/src/arm/arm_schedulesigaction.c b/arch/arm/src/arm/arm_schedulesigaction.c index 9e37043162b..2d37ec6ed83 100644 --- a/arch/arm/src/arm/arm_schedulesigaction.c +++ b/arch/arm/src/arm/arm_schedulesigaction.c @@ -134,13 +134,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled @@ -175,12 +176,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled diff --git a/arch/arm/src/armv6-m/arm_schedulesigaction.c b/arch/arm/src/armv6-m/arm_schedulesigaction.c index 23e4290628d..1f30fed6de8 100644 --- a/arch/arm/src/armv6-m/arm_schedulesigaction.c +++ b/arch/arm/src/armv6-m/arm_schedulesigaction.c @@ -136,13 +136,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -182,12 +183,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled. We must already be in privileged thread mode to be @@ -285,13 +287,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. We must already be in privileged thread mode @@ -328,13 +331,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -395,12 +399,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Increment the IRQ lock count so that when the task is restarted, * it will hold the IRQ spinlock. diff --git a/arch/arm/src/armv7-a/arm_schedulesigaction.c b/arch/arm/src/armv7-a/arm_schedulesigaction.c index aaf03c03f88..497cec24afe 100644 --- a/arch/arm/src/armv7-a/arm_schedulesigaction.c +++ b/arch/arm/src/armv7-a/arm_schedulesigaction.c @@ -139,13 +139,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled @@ -183,12 +184,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled @@ -284,13 +286,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled @@ -326,13 +329,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -393,12 +397,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Increment the IRQ lock count so that when the task is restarted, * it will hold the IRQ spinlock. diff --git a/arch/arm/src/armv7-m/arm_schedulesigaction.c b/arch/arm/src/armv7-m/arm_schedulesigaction.c index 9bcf40e1b33..b8c224fbc4a 100644 --- a/arch/arm/src/armv7-m/arm_schedulesigaction.c +++ b/arch/arm/src/armv7-m/arm_schedulesigaction.c @@ -137,13 +137,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -187,12 +188,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled. We must already be in privileged thread mode to be @@ -294,13 +296,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. We must already be in privileged thread mode @@ -341,13 +344,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -412,12 +416,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Increment the IRQ lock count so that when the task is restarted, * it will hold the IRQ spinlock. diff --git a/arch/arm/src/armv7-r/arm_schedulesigaction.c b/arch/arm/src/armv7-r/arm_schedulesigaction.c index 284ca3d0578..245696378a4 100644 --- a/arch/arm/src/armv7-r/arm_schedulesigaction.c +++ b/arch/arm/src/armv7-r/arm_schedulesigaction.c @@ -134,13 +134,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled @@ -179,12 +180,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled diff --git a/arch/arm/src/armv8-m/arm_schedulesigaction.c b/arch/arm/src/armv8-m/arm_schedulesigaction.c index 228efadd648..495aed85a5c 100644 --- a/arch/arm/src/armv8-m/arm_schedulesigaction.c +++ b/arch/arm/src/armv8-m/arm_schedulesigaction.c @@ -137,13 +137,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -187,12 +188,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up to vector to the trampoline with interrupts * disabled. We must already be in privileged thread mode to be @@ -294,13 +296,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. We must already be in privileged thread mode @@ -341,13 +344,14 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * been delivered. */ - CURRENT_REGS = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)CURRENT_REGS - - (uint32_t)XCPTCONTEXT_SIZE); + CURRENT_REGS = (FAR void *) + ((uint32_t)CURRENT_REGS - + (uint32_t)XCPTCONTEXT_SIZE); memcpy((FAR uint32_t *)CURRENT_REGS, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS; + CURRENT_REGS[REG_SP] = (uint32_t)CURRENT_REGS + + (uint32_t)XCPTCONTEXT_SIZE; /* Then set up vector to the trampoline with interrupts * disabled. The kernel-space trampoline must run in @@ -416,12 +420,13 @@ void up_schedule_sigaction(struct tcb_s *tcb, sig_deliver_t sigdeliver) * delivered. */ - tcb->xcp.regs = - (FAR void *)STACK_ALIGN_DOWN((uint32_t)tcb->xcp.regs - - (uint32_t)XCPTCONTEXT_SIZE); + tcb->xcp.regs = (FAR void *) + ((uint32_t)tcb->xcp.regs - + (uint32_t)XCPTCONTEXT_SIZE); memcpy(tcb->xcp.regs, tcb->xcp.saved_regs, XCPTCONTEXT_SIZE); - tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs; + tcb->xcp.regs[REG_SP] = (uint32_t)tcb->xcp.regs + + (uint32_t)XCPTCONTEXT_SIZE; /* Increment the IRQ lock count so that when the task is restarted, * it will hold the IRQ spinlock.