105 lines
2.9 KiB
NASM
105 lines
2.9 KiB
NASM
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||
|
;;;
|
||
|
;;; Microsoft Research Singularity
|
||
|
;;;
|
||
|
;;; Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
;;;
|
||
|
;;; This file contains ARM-specific assembly code for the kernel debugger.
|
||
|
;;;
|
||
|
|
||
|
|defining ?g_Break@Class_Microsoft_Singularity_DebugStub@@SAXXZ| EQU 1
|
||
|
|
||
|
include hal.inc
|
||
|
|
||
|
TEXTAREA
|
||
|
|
||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; KD Support.
|
||
|
;;;
|
||
|
|
||
|
;;;
|
||
|
;;; "public: static void Class_Microsoft_Singularity_DebugStub::g_Break(void)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?g_Break@Class_Microsoft_Singularity_DebugStub@@SAXXZ
|
||
|
; bkpt 0xffff
|
||
|
swi 0xffff03
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "void KdpPause(void)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdpPause@@YAXXZ
|
||
|
DCD 0xe320f002 ;; WFE Note: ARMv7 Specific.
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "bool KdpDisableInterruptsInline(void)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdpDisableInterruptsInline@@YA_NXZ
|
||
|
|
||
|
mrs r1, cpsr
|
||
|
;; remember previous bit for later
|
||
|
and r0, r1, #Struct_Microsoft_Singularity_Isal_Arm_Psr_DisableIrq
|
||
|
orr r1, r1, #Struct_Microsoft_Singularity_Isal_Arm_Psr_DisableIrq
|
||
|
msr cpsr_c, r1
|
||
|
|
||
|
;; include a nop so the linker doesn't merge with Target.DisableInterrupts.
|
||
|
nop
|
||
|
|
||
|
;; if bit is 1, we return false, so negate the bit with an xor
|
||
|
eors r0, r0, #Struct_Microsoft_Singularity_Isal_Arm_Psr_DisableIrq
|
||
|
;; normalize true value
|
||
|
movne r0, #1
|
||
|
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "void KdpEnableInterruptsInline(void)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdpEnableInterruptsInline@@SAXXZ
|
||
|
|
||
|
mrs r0, cpsr
|
||
|
bic r0, r0, #Struct_Microsoft_Singularity_Isal_Arm_Psr_DisableIrq
|
||
|
msr cpsr_c, r0
|
||
|
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "void KdpRestoreInterruptsInline(bool)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdpRestoreInterruptsInline@@YAX_N@Z
|
||
|
cmp r0, #0
|
||
|
bne |?KdpEnableInterruptsInline@@SAXXZ|
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "void KdNotifyTrap(KdDebugTrapData *)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdNotifyTrap@@YAXPAUKdDebugTrapData@@@Z
|
||
|
swi 0xffff2e
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "void KdNotifyException(System_Exception *, unsigned int throwAddr)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdNotifyException@@YAXPAUClass_System_Exception@@I@Z
|
||
|
;; FIXME!!!
|
||
|
swi 0xffff03
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
;;;
|
||
|
;;; "void KdpArmSetControlReport(Struct_Microsoft_Singularity_Kd_ArmKdControlReport *)"
|
||
|
;;;
|
||
|
LEAF_ENTRY ?KdpArmSetControlReport@@YAXPAUStruct_Microsoft_Singularity_Kd_ArmKdControlReport@@@Z
|
||
|
;; No support needed yet.
|
||
|
bx lr
|
||
|
LEAF_END
|
||
|
|
||
|
END
|