diff --git a/monitor/monitor.asm b/monitor/monitor.asm index 08b6743..36f9d7c 100644 --- a/monitor/monitor.asm +++ b/monitor/monitor.asm @@ -1,43 +1,11 @@ ; debug monitor +; only call this from system_breakpoint_handler! invoke_monitor: ; return if we're already in the monitor cmp [0x000003FC], monitor_vsync_handler ifz jmp invoke_monitor_aleady_in_monitor - push r31 - push r30 - push r29 - push r28 - push r27 - push r26 - push r25 - push r24 - push r23 - push r22 - push r21 - push r20 - push r19 - push r18 - push r17 - push r16 - push r15 - push r14 - push r13 - push r12 - push r11 - push r10 - push r9 - push r8 - push r7 - push r6 - push r5 - push r4 - push r3 - push r2 - push r1 - push r0 - ; set the vsync handler to our own and reenable interrupts mov [MONITOR_OLD_VSYNC_HANDLER], [0x000003FC] mov [0x000003FC], monitor_vsync_handler @@ -94,39 +62,6 @@ exit_monitor: call enable_cursor - pop r0 - pop r1 - pop r2 - pop r3 - pop r4 - pop r5 - pop r6 - pop r7 - pop r8 - pop r9 - pop r10 - pop r11 - pop r12 - pop r13 - pop r14 - pop r15 - pop r16 - pop r17 - pop r18 - pop r19 - pop r20 - pop r21 - pop r22 - pop r23 - pop r24 - pop r25 - pop r26 - pop r27 - pop r28 - pop r29 - pop r30 - pop r31 - ret exit_monitor_and_jump: @@ -140,39 +75,6 @@ exit_monitor_and_jump: ; save the jump address in a temporary location mov [MONITOR_OLD_RSP], r0 - pop r0 - pop r1 - pop r2 - pop r3 - pop r4 - pop r5 - pop r6 - pop r7 - pop r8 - pop r9 - pop r10 - pop r11 - pop r12 - pop r13 - pop r14 - pop r15 - pop r16 - pop r17 - pop r18 - pop r19 - pop r20 - pop r21 - pop r22 - pop r23 - pop r24 - pop r25 - pop r26 - pop r27 - pop r28 - pop r29 - pop r30 - pop r31 - jmp [MONITOR_OLD_RSP] invoke_monitor_aleady_in_monitor: