← Back to team overview

t-kernel team mailing list archive

[PATCH] monitor: do not switch mode in svc mode.

 

From: Du Huanpeng <u74147@xxxxxxxxx>

Signed-off-by: Du Huanpeng <u74147@xxxxxxxxx>
---
 tkernel_source/monitor/hwdepend/arm/cpu/monhdr.S | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/tkernel_source/monitor/hwdepend/arm/cpu/monhdr.S b/tkernel_source/monitor/hwdepend/arm/cpu/monhdr.S
index 09a6004..c177754 100755
--- a/tkernel_source/monitor/hwdepend/arm/cpu/monhdr.S
+++ b/tkernel_source/monitor/hwdepend/arm/cpu/monhdr.S
@@ -74,18 +74,26 @@ _defaultHdr:
 
 	and	r6, r7, #0x1F
 	cmp	r6, #0x10		@ usr: Normal program execution mode
-	beq	100f
+	popeq	{r4, r5, r6, r7, pc}
+
 
 	cmp	r6, #0x13
-	bicne	r7, #0x1F
-	orrne	r7, #0x13		@ svc: A protected mode for the operating system
-	msrne	cpsr, r7
+	bne	100f
+	beq	200f
+
+100:
+	bic	r7, #0x1F
+	orr	r7, #0x13		@ svc: A protected mode for the operating system
+	msr	cpsr, r7
 
 	bl	entMonitor		@ don't switch modes in 'entMonitor'
 
 	mrs	r7, spsr
 	msr	cpsr, r7
-100:
+	pop	{r4, r5, r6, r7, pc}
+
+200:
+	bl	entMonitor
 	pop	{r4, r5, r6, r7, pc}
 
 
-- 
1.9.1