← Back to team overview

t-kernel team mailing list archive

[PATCH] mx28: [wip] icoll

 

From: Du Huanpeng <u74147@xxxxxxxxx>

Signed-off-by: Du Huanpeng <u74147@xxxxxxxxx>
---
 tkernel_source/monitor/lib/printk.c    |  5 -----
 tkernel_source/monitor/tmmain/kernel.c | 14 ++++++++++++++
 tkernel_source/monitor/tmmain/monkey.S | 29 +++++++++++++++++++++++++++++
 3 files changed, 43 insertions(+), 5 deletions(-)

diff --git a/tkernel_source/monitor/lib/printk.c b/tkernel_source/monitor/lib/printk.c
index e7fb8da..ae23b2d 100644
--- a/tkernel_source/monitor/lib/printk.c
+++ b/tkernel_source/monitor/lib/printk.c
@@ -89,11 +89,6 @@ int vprintks(const char *fmt, va_list args)
 	char printbuf[32 + 1];
 	#define printbufend (printbuf + sizeof(printbuf) - 1)
 
-	int flag, pad;
-	#define PAD_RIGHT	1
-	#define PAD_LEFT	2
-
-
 	j = 0;
 	i = 0;
 	pi = 0;
diff --git a/tkernel_source/monitor/tmmain/kernel.c b/tkernel_source/monitor/tmmain/kernel.c
index 1d50761..1a0f61c 100644
--- a/tkernel_source/monitor/tmmain/kernel.c
+++ b/tkernel_source/monitor/tmmain/kernel.c
@@ -1,5 +1,11 @@
 #include <tmonitor.h>
 
+extern int getcpsr(void);
+int set_cpsr(int cpsr);
+int get_cpsr(void);
+
+extern int getr(int *);
+
 extern int syscall(int);
 
 int start_kernel(int argc, char *argv[])
@@ -7,9 +13,17 @@ int start_kernel(int argc, char *argv[])
 	int i;
 	int rc;
 	int reg[16];
+	int cpsr;
+
+	cpsr = get_cpsr();
+	cpsr &= ~(1<<6 | 1<<7); /* enable irq & fiq */
+	cpsr = set_cpsr(cpsr);
 
 	printk("starting kernel...");
 
+	avic_init_irq((void *)0x80000000, 128);
+
+
 	printk("CPSR: [%08X]\n", getcpsr());
 	getr(reg);
 
diff --git a/tkernel_source/monitor/tmmain/monkey.S b/tkernel_source/monitor/tmmain/monkey.S
index 6ba0558..42b0406 100644
--- a/tkernel_source/monitor/tmmain/monkey.S
+++ b/tkernel_source/monitor/tmmain/monkey.S
@@ -31,5 +31,34 @@ getpc:
 
 	.global getr
 getr:
+
 	stmia	r0, {r0-r15}
+	mrs	r1, cpsr
+	str	r1, [r0, #16]
+	mrs	r1, spsr
+	str	r1, [r0, #17]
+	ldr	r1, [r0, #1]
+
+	bx	lr
+
+	stmfd	sp, {r0-r15}
+	mrs	r0, cpsr
+	str	r0, [sp, #-16]
+	mrs	r0, spsr
+	str	r0, [sp, #-17]
+
+
+	.global set_cpsr
+	.global get_cpsr
+	.global mask_cpsr
+get_cpsr:
+	mrs	r0, cpsr
+	bx	lr
+set_cpsr:
+	msr	cpsr, r0
 	bx	lr
+
+mask_cpsr:
+	bl	printk
+	bx	lr
+
-- 
1.9.1




References