reactos/sdk/include/asm/kxarm.h

259 lines
4.7 KiB
C

#define ENABLE_FRAME_POINTER 1
#undef TRUE
//#define TRUE 1
#undef FALSE
//#define FALSE 0
//#include "kxarmunw.h"
#ifdef _MSC_VER
/* Globals */
GBLS __FuncStartLabel
GBLS __FuncEpilog1StartLabel
GBLS __FuncEpilog2StartLabel
GBLS __FuncEpilog3StartLabel
GBLS __FuncEpilog4StartLabel
GBLS __FuncXDataLabel
GBLS __FuncXDataPrologLabel
GBLS __FuncXDataEpilog1Label
GBLS __FuncXDataEpilog2Label
GBLS __FuncXDataEpilog3Label
GBLS __FuncXDataEpilog4Label
GBLS __FuncXDataEndLabel
GBLS __FuncEndLabel
GBLS __FuncArea
GBLS __FuncExceptionHandler
MACRO
__DeriveFunctionLabels $FuncName
__FuncStartLabel SETS "|$FuncName|"
__FuncEndLabel SETS "|$FuncName._end|"
__FuncEpilog1StartLabel SETS "|$FuncName._epilog1_start|"
__FuncEpilog2StartLabel SETS "|$FuncName._epilog2_start|"
__FuncEpilog3StartLabel SETS "|$FuncName._epilog3_start|"
__FuncEpilog4StartLabel SETS "|$FuncName._epilog4_start|"
__FuncXDataLabel SETS "|$FuncName._xdata|"
__FuncXDataPrologLabel SETS "|$FuncName._xdata_prolog|"
__FuncXDataEpilog1Label SETS "|$FuncName._xdata_epilog1|"
__FuncXDataEpilog2Label SETS "|$FuncName._xdata_epilog2|"
__FuncXDataEpilog3Label SETS "|$FuncName._xdata_epilog3|"
__FuncXDataEpilog4Label SETS "|$FuncName._xdata_epilog4|"
__FuncXDataEndLabel SETS "|$FuncName._xdata_end|"
MEND
MACRO
__ExportName $FuncName
LCLS Name
Name SETS "|$FuncName|"
ALIGN 4
EXPORT $Name
$Name
MEND
MACRO
__ExportProc $FuncName
LCLS Name
Name SETS "|$FuncName|"
ALIGN 4
EXPORT $Name
$Name PROC
MEND
MACRO
TEXTAREA
#if defined(_CONTROL_FLOW_GUARD)
AREA |.text|,ALIGN=4,CODE,READONLY
#else
AREA |.text|,ALIGN=2,CODE,READONLY
#endif
MEND
MACRO
DATAAREA
AREA |.data|,DATA
MEND
MACRO
RODATAAREA
AREA |.rdata|,DATA,READONLY
MEND
MACRO
NESTED_ENTRY $FuncName, $AreaName, $ExceptHandler
__DeriveFunctionLabels $FuncName
__FuncArea SETS "|.text|"
IF "$AreaName" != ""
__FuncArea SETS "$AreaName"
ENDIF
__FuncExceptionHandler SETS ""
IF "$ExceptHandler" != ""
__FuncExceptionHandler SETS "|$ExceptHandler|"
ENDIF
AREA $__FuncArea,CODE,READONLY
__ExportProc $FuncName
ROUT
// __ResetUnwindState
MEND
// FIXME: this does not exist in native
MACRO
PROLOG_END
/* Ignore for now */
MEND
MACRO
NESTED_END $FuncName
$__FuncEndLabel
LTORG
ENDP
//AREA |.pdata|,ALIGN=2,READONLY
//DCD $__FuncStartLabel
//RELOC 2
//DCD $__FuncXDataLabel
//RELOC 2
//__EmitUnwindXData
//AREA $__FuncArea,CODE,READONLY
__FuncStartLabel SETS ""
__FuncEndLabel SETS ""
MEND
MACRO
LEAF_ENTRY $FuncName, $AreaName
NESTED_ENTRY $FuncName, $AreaName
MEND
MACRO
LEAF_END $FuncName
NESTED_END $FuncName
MEND
MACRO
LEAF_ENTRY_NO_PDATA $FuncName, $AreaName
__DeriveFunctionLabels $FuncName
__FuncArea SETS "|.text|"
IF "$AreaName" != ""
__FuncArea SETS "$AreaName"
ENDIF
AREA $__FuncArea,CODE,READONLY
__ExportProc $FuncName
ROUT
MEND
MACRO
LEAF_END_NO_PDATA $FuncName
$__FuncEndLabel
LTORG
ENDP
__FuncStartLabel SETS ""
__FuncEndLabel SETS ""
MEND
MACRO
ALTERNATE_ENTRY $FuncName
__ExportName $FuncName
ROUT
MEND
#define CR 13
#define LF 10
#define NUL 0
#define ASCII dcb
MACRO
UNIMPLEMENTED $Name
MEND
#else
/* Compatibility define */
#define EQU .equ
.macro IMPORT Name
/* Ignore */
.endm
.macro EXPORT Name
.global &Name
.endm
.macro TEXTAREA
.section .text, "rx"
#if defined(_CONTROL_FLOW_GUARD)
.align 4
#else
.align 2
#endif
.endm
.macro DATAAREA
.section .data, "rw"
.endm
.macro RODATAAREA
.section .rdata, "rw"
.endm
.macro NESTED_ENTRY Name
FuncName .equ &Name
PrologName .equ &Name&_Prolog
FuncEndName .equ &Name&_end
.global &FuncName
.align 2
.func &FuncName
&FuncName:
.endm
// FIXME: should go to kxarmunw.h
.macro PROLOG_END
\PrologName:
.endm
.macro NESTED_END Name
&FuncEndName:
.endfunc
.endm
.macro LEAF_ENTRY $FuncName, $AreaName
NESTED_ENTRY $FuncName, $AreaName
.endm
.macro LEAF_END $FuncName
NESTED_END $FuncName
.endm
/* Some "intrinsics", see http://codemachine.com/article_armasm.html */
.macro __debugbreak
DCD 0xDEFE
.endm
.macro __assertfail
DCD 0xDEFC
.endm
.macro __fastfail
DCD 0xDEFB
.endm
.macro __rdpmccntr64
DCD 0xDEFA
.endm
.macro __debugservice
DCD 0xDEFD
.endm
.macro __brkdiv0
DCD 0xDEF9
.endm
#endif