t-kernel team mailing list archive
-
t-kernel team
-
Mailing list archive
-
Message #00087
[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