singrdk/base/Kernel/Native/arm/kdasm.asm

105 lines
2.9 KiB
NASM
Raw Normal View History

2008-11-17 18:29:00 -05:00
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;
;;; 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