From ea01b025a2a56d3693e626025bd2454d0d3a4866 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 23 May 2015 13:07:28 +0000 Subject: [PATCH] - fixed interrupt enable on jump into main git-svn-id: http://moon:8086/svn/mips@21 a8ebac50-d88d-4704-bea3-6648445a41b3 --- src/bootloader/bootloader.c | 20 ++++++------------- src/bootloader/bootloader_with_flash.c | 27 +++++++------------------- 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/src/bootloader/bootloader.c b/src/bootloader/bootloader.c index b5142ce..c9cf555 100644 --- a/src/bootloader/bootloader.c +++ b/src/bootloader/bootloader.c @@ -115,14 +115,11 @@ void Jump_to(void *pEntry) __asm ( "jr %[pEntry]\n" // jump entry + "nop\n" : : [pEntry] "r" (pEntry) ); __asm - ( - "nop\n" - ); - __asm ( ".set reorder\n" ); @@ -137,18 +134,12 @@ void Exec_at(void *pEntry) __asm ( - "mfc0 $26, $12\n" // change exception vector - "li $27, 0xFFBFFFFF\n" - "and $26, $27\n" - "mtc0 $26, $12\n" - ); - - __asm - ( - "lw $v0, 16($sp)\n" + "mtc0 %[pEntry], $14\n" "nop\n" - "jr $v0\n" // jump entry + "jr %[pEntry]\n" // jump entry "rfe\n" + : + : [pEntry] "r" (pEntry) ); __asm @@ -156,6 +147,7 @@ void Exec_at(void *pEntry) ".set reorder\n" ); } + void PrintCPUinfo(void) { int result, rev_id; diff --git a/src/bootloader/bootloader_with_flash.c b/src/bootloader/bootloader_with_flash.c index 4f78a61..733cc63 100644 --- a/src/bootloader/bootloader_with_flash.c +++ b/src/bootloader/bootloader_with_flash.c @@ -136,14 +136,11 @@ void Jump_to(void *pEntry) __asm ( "jr %[pEntry]\n" // jump entry + "nop\n" : : [pEntry] "r" (pEntry) ); __asm - ( - "nop\n" - ); - __asm ( ".set reorder\n" ); @@ -158,22 +155,14 @@ void Exec_at(void *pEntry) __asm ( - "li $26, 0x1000000A\n" - "mtc0 $26, $12\n" - ); - - __asm - ( + "mtc0 %[pEntry], $14\n" + "nop\n" "jr %[pEntry]\n" // jump entry + "rfe\n" : : [pEntry] "r" (pEntry) ); - __asm - ( - "rfe\n" - ); - __asm ( ".set reorder\n" @@ -199,16 +188,14 @@ void Exec_RE_at(void *pEntry) __asm ( + "mtc0 %[pEntry], $14\n" + "nop\n" "jr %[pEntry]\n" // jump entry + "rfe\n" : : [pEntry] "r" (pEntry) ); - __asm - ( - "rfe\n" - ); - __asm ( ".set reorder\n"