[rtems commit] arm: Use push/pop instructions for readability

Sebastian Huber sebh at rtems.org
Mon Jan 17 07:17:53 UTC 2022


Module:    rtems
Branch:    master
Commit:    2d1ea1abaeab28d0d81ff9158f97204433d3b370
Changeset: http://git.rtems.org/rtems/commit/?id=2d1ea1abaeab28d0d81ff9158f97204433d3b370

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Jan 14 13:25:30 2022 +0100

arm: Use push/pop instructions for readability

Update #4579.

---

 cpukit/score/cpu/arm/arm_exc_interrupt.S | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/cpukit/score/cpu/arm/arm_exc_interrupt.S b/cpukit/score/cpu/arm/arm_exc_interrupt.S
index ddcaf94..2775558 100644
--- a/cpukit/score/cpu/arm/arm_exc_interrupt.S
+++ b/cpukit/score/cpu/arm/arm_exc_interrupt.S
@@ -72,17 +72,17 @@ _ARMV4_Exception_interrupt:
 	 * necessary for the stack alignment for the stack pointer of the
 	 * interrupted context.
 	 */
-	stmdb	sp!, CONTEXT_LIST
-	stmdb	sp!, {NON_VOLATILE_SCRATCH, lr}
+	push	CONTEXT_LIST
+	push	{NON_VOLATILE_SCRATCH, lr}
 
 #ifdef ARM_MULTILIB_VFP
 	/* Save VFP context */
 	vmrs	r0, FPSCR
-	vstmdb	sp!, {d0-d7}
+	vpush	{d0-d7}
 #ifdef ARM_MULTILIB_VFP_D32
-	vstmdb	sp!, {d16-d31}
+	vpush	{d16-d31}
 #endif
-	stmdb	sp!, {r0, r1}
+	push	{r0, r1}
 #endif /* ARM_MULTILIB_VFP */
 
 	/* Get per-CPU control of current processor */
@@ -200,16 +200,16 @@ _ARMV4_Exception_interrupt:
 
 #ifdef ARM_MULTILIB_VFP
 	/* Restore VFP context */
-	ldmia	sp!, {r0, r1}
+	pop	{r0, r1}
 #ifdef ARM_MULTILIB_VFP_D32
-	vldmia	sp!, {d16-d31}
+	vpop	{d16-d31}
 #endif
-	vldmia	sp!, {d0-d7}
+	vpop	{d0-d7}
 	vmsr	FPSCR, r0
 #endif /* ARM_MULTILIB_VFP */
 
 	/* Restore NON_VOLATILE_SCRATCH register and link register */
-	ldmia	sp!, {NON_VOLATILE_SCRATCH, lr}
+	pop	{NON_VOLATILE_SCRATCH, lr}
 
 	/*
 	 * XXX: Remember and restore stack pointer.  The data on the stack is
@@ -227,7 +227,7 @@ _ARMV4_Exception_interrupt:
 	msr	CPSR_c, r1
 
 	/* Save EXCHANGE_LR and EXCHANGE_SPSR registers to exchange area */
-	stmdb	sp!, {EXCHANGE_LR, EXCHANGE_SPSR}
+	push	{EXCHANGE_LR, EXCHANGE_SPSR}
 
 	/* Restore context */
 	ldmia	r0, CONTEXT_LIST
@@ -237,7 +237,7 @@ _ARMV4_Exception_interrupt:
 	msr	SPSR_fsxc, EXCHANGE_SPSR
 
 	/* Restore EXCHANGE_LR and EXCHANGE_SPSR registers from exchange area */
-	ldmia	sp!, {EXCHANGE_LR, EXCHANGE_SPSR}
+	pop	{EXCHANGE_LR, EXCHANGE_SPSR}
 
 #ifdef ARM_MULTILIB_HAS_LOAD_STORE_EXCLUSIVE
 	/*



More information about the vc mailing list