# HG changeset patch # User Paul Boddie # Date 1461686571 -7200 # Node ID 34f40000b77921770310b1bb188c7f2f6bef4adc # Parent 9973a779baf4654b228c47dfe79b33b374bc86c6 Use the exception return mechanism to invoke a task. diff -r 9973a779baf4 -r 34f40000b779 stage2/cpu.c --- a/stage2/cpu.c Tue Apr 26 17:18:12 2016 +0200 +++ b/stage2/cpu.c Tue Apr 26 18:02:51 2016 +0200 @@ -145,7 +145,13 @@ "lw $a3, 28($t3)\n" "lw $t9, 100($t3)\n" "lw $gp, 104($t3)\n" - "jr $t9\n" + "mtc0 $t9, $14\n" /* CP0_EPC */ + "mfc0 $t3, $12\n" /* CP0_STATUS */ + "ori $t3, $t3, 0x2\n" /* EXL = 1 */ + "mtc0 $t3, $12\n" /* CP0_STATUS */ + ".set mips3\n" + "eret\n" + ".set mips2\n" "nop" : : "r" (asid), "r" (stack_pointer), "r" (base)