117 lines
3.6 KiB
PHP
117 lines
3.6 KiB
PHP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; Copyright (c) Microsoft Corporation. All rights reserved.
|
|
;
|
|
; Include file for kernel assembly files.
|
|
;
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; Include platform definitions
|
|
|
|
include ix.inc
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; Include singularity declarations
|
|
|
|
include halclass.inc
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; Macros for accessing fields inside ProcessorContext
|
|
;
|
|
|
|
GET_PROCESSOR_CONTEXT MACRO reg
|
|
mov REG32(reg), [?c_currentCpuOffset@Class_Microsoft_Singularity_Isal_Isa@@2HA]
|
|
mov reg, PSEG:[REG32(reg)]
|
|
ENDM
|
|
|
|
GET_THREAD_CONTEXT MACRO reg
|
|
mov REG32(reg), [?c_currentThreadOffset@Class_Microsoft_Singularity_Isal_Isa@@2HA]
|
|
mov reg, PSEG:[REG32(reg)]
|
|
ENDM
|
|
|
|
GET_PROCESSOR_CONTEXT_FIELD MACRO reg, field
|
|
GET_PROCESSOR_CONTEXT reg
|
|
mov reg, [reg].Struct_Microsoft_Singularity_ProcessorContext.field
|
|
ENDM
|
|
|
|
SET_PROCESSOR_CONTEXT_FIELD MACRO field, reg
|
|
push reg
|
|
GET_PROCESSOR_CONTEXT reg
|
|
pop [reg].Struct_Microsoft_Singularity_ProcessorContext.field
|
|
mov reg, [reg].Struct_Microsoft_Singularity_ProcessorContext.field
|
|
ENDM
|
|
|
|
GET_THREAD_CONTEXT_FIELD MACRO reg, field
|
|
GET_THREAD_CONTEXT reg
|
|
mov reg, [reg].Struct_Microsoft_Singularity_ThreadContext.field
|
|
ENDM
|
|
|
|
SET_THREAD_CONTEXT_FIELD MACRO field, reg
|
|
push reg
|
|
GET_THREAD_CONTEXT reg
|
|
pop [reg].Struct_Microsoft_Singularity_ThreadContext.field
|
|
mov reg, [reg].Struct_Microsoft_Singularity_ThreadContext.field
|
|
ENDM
|
|
|
|
GET_CPU_RECORD_FIELD MACRO reg, field
|
|
GET_PROCESSOR_CONTEXT reg
|
|
mov reg, [reg].Struct_Microsoft_Singularity_Isal_CpuRecord.field
|
|
ENDM
|
|
|
|
SET_CPU_RECORD_FIELD MACRO field, reg
|
|
push reg
|
|
GET_PROCESSOR_CONTEXT reg
|
|
pop [reg].Struct_Microsoft_Singularity_Isal_CpuRecord.field
|
|
mov reg, [reg].Struct_Microsoft_Singularity_Isal_CpuRecord.field
|
|
ENDM
|
|
|
|
GET_THREAD_RECORD_FIELD MACRO reg, field
|
|
GET_THREAD_CONTEXT reg
|
|
mov reg, [reg].Struct_Microsoft_Singularity_Isal_ThreadRecord.field
|
|
ENDM
|
|
|
|
SET_THREAD_RECORD_FIELD MACRO field, reg
|
|
push reg
|
|
GET_THREAD_CONTEXT reg
|
|
pop [reg].Struct_Microsoft_Singularity_Isal_ThreadRecord.field
|
|
mov reg, [reg].Struct_Microsoft_Singularity_Isal_ThreadRecord.field
|
|
ENDM
|
|
|
|
; define CurrentThread() function as a macro.
|
|
CurrentThread MACRO reg
|
|
GET_THREAD_CONTEXT_FIELD(__thread,reg)
|
|
ENDM
|
|
|
|
CurrentThreadContext MACRO reg
|
|
GET_THREAD_CONTEXT reg
|
|
ENDM
|
|
|
|
CurrentThreadRecord MACRO reg
|
|
GET_THREAD_CONTEXT reg
|
|
ENDM
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
;
|
|
; Big/Little Endian Definitions for Long Integers
|
|
;
|
|
|
|
ifdef bigend ; Big Endian (hi word at low address)
|
|
LOWORD equ [4]
|
|
HIWORD equ [0]
|
|
else ; Little Endian (low word at low address)
|
|
LOWORD equ [0]
|
|
HIWORD equ [4]
|
|
endif
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; X64 specific stuff
|
|
|
|
ifdef ISA_IX64
|
|
|
|
include halx64.inc
|
|
|
|
endif
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; End of File.
|