summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2011-04-11 17:07:58 -0700
committerRichard Henderson <rth@twiddle.net>2011-04-11 17:07:58 -0700
commit6e14504513166f6b5ad7e46a9c365cca005ff918 (patch)
tree4353b9c30acfa5318a64ce7ae22feb0454e6ac83
parentaacb76ca0399404c560bb8ee7bebecf730ac3a3a (diff)
downloadqemu-palcode-6e14504513166f6b5ad7e46a9c365cca005ff918.zip
qemu-palcode-6e14504513166f6b5ad7e46a9c365cca005ff918.tar.gz
qemu-palcode-6e14504513166f6b5ad7e46a9c365cca005ff918.tar.bz2
Signal halt properly.
-rw-r--r--init.c4
-rw-r--r--pal.S8
2 files changed, 11 insertions, 1 deletions
diff --git a/init.c b/init.c
index d8b9b4c..4973756 100644
--- a/init.c
+++ b/init.c
@@ -211,5 +211,7 @@ do_start(unsigned long memsize, void (*kernel_entry)(void))
uart_init ();
uart_puts (COM1, "Hello, World!\n");
- while (1) ;
+ if (kernel_entry)
+ kernel_entry();
+ asm ("halt");
}
diff --git a/pal.S b/pal.S
index a570293..b31b63e 100644
--- a/pal.S
+++ b/pal.S
@@ -399,6 +399,14 @@ Pal_Fen:
CallPal_Halt:
bsr p7, UpdatePCB // Save kernel data
lda v0, HLT_K_SW_HALT
+
+ ldah p0, 1 // Store 0xdead into CIA RESET reg
+ lda p0, -(0x10000 - 0xdead)(p0)
+ lda p1, 0x878
+ sll p1, 28, p1
+ lda p1, 0x900(p1)
+ stl_p p0, 0(p1)
+
br Sys_EnterConsole
/*