From 6e14504513166f6b5ad7e46a9c365cca005ff918 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 11 Apr 2011 17:07:58 -0700 Subject: Signal halt properly. --- init.c | 4 +++- pal.S | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) 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 /* -- cgit v1.1