mirror of
https://github.com/reactos/reactos.git
synced 2024-06-26 07:51:52 +00:00
[ASM]
- Make syscalls ARM compatible svn path=/trunk/; revision=67640
This commit is contained in:
parent
89ee675f59
commit
9fbce543e9
|
@ -1,4 +1,57 @@
|
|||
|
||||
#ifdef _M_ARM
|
||||
|
||||
#include <ksarm.h>
|
||||
|
||||
GBLA SyscallId
|
||||
|
||||
SyscallId SETA 0
|
||||
|
||||
MACRO
|
||||
STUB_K $Name
|
||||
LCLS ZwFuncName
|
||||
LCLS ZwFuncEndName
|
||||
ZwFuncName SETS "Zw$Name"
|
||||
ZwFuncEndName SETS "$ZwFuncName":CC:"_end"
|
||||
ALIGN 2
|
||||
EXPORT $ZwFuncName [FUNC]
|
||||
$ZwFuncName
|
||||
ROUT
|
||||
mov r12, #SyscallId
|
||||
svc #1
|
||||
bx lr
|
||||
$ZwFuncEndName
|
||||
MEND
|
||||
|
||||
MACRO
|
||||
STUB_U $Name
|
||||
LCLS NtFuncName
|
||||
LCLS NtFuncEndName
|
||||
LCLS ZwFuncName
|
||||
LCLS ZwFuncEndName
|
||||
NtFuncName SETS "Nt$Name"
|
||||
NtFuncEndName SETS "$NtFuncName":CC:"_end"
|
||||
ZwFuncName SETS "Zw$Name"
|
||||
ZwFuncEndName SETS "$ZwFuncName":CC:"_end"
|
||||
ALIGN 2
|
||||
EXPORT $NtFuncName [FUNC]
|
||||
$NtFuncName
|
||||
EXPORT $ZwFuncName [FUNC]
|
||||
$ZwFuncName
|
||||
ROUT
|
||||
mov r12, #SyscallId
|
||||
svc #1
|
||||
bx lr
|
||||
$NtFuncEndName
|
||||
$ZwFuncEndName
|
||||
MEND
|
||||
|
||||
#else
|
||||
|
||||
#include <asm.inc>
|
||||
|
||||
SyscallId = 0
|
||||
|
||||
#ifdef _M_IX86
|
||||
#define KUSER_SHARED_SYSCALL HEX(7ffe0300)
|
||||
#define KGDT_R0_CODE 8
|
||||
|
@ -35,16 +88,6 @@ MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
|
|||
mov r10, ArgCount * 8
|
||||
jmp KiZwSystemService
|
||||
ENDM
|
||||
#elif defined(_M_ARM)
|
||||
MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
|
||||
swi #SyscallId
|
||||
bx lr
|
||||
ENDM
|
||||
MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
|
||||
mov ip, lr
|
||||
swi #SyscallId
|
||||
bx ip
|
||||
ENDM
|
||||
#elif defined(_M_PPC)
|
||||
MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
|
||||
stwu 1,-16(1)
|
||||
|
@ -107,3 +150,5 @@ MACRO(STUB_K, Name, ArgCount)
|
|||
.ENDP
|
||||
SyscallId = SyscallId + 1
|
||||
ENDM
|
||||
|
||||
#endif
|
||||
|
|
|
@ -1,7 +1,16 @@
|
|||
|
||||
#include <asm.inc>
|
||||
#include <syscalls.inc>
|
||||
|
||||
#ifdef _M_ARM
|
||||
|
||||
TEXTAREA
|
||||
|
||||
#define SVC_(name, argcount) STUB_K name
|
||||
|
||||
#include <sysfuncs.h>
|
||||
|
||||
#else
|
||||
|
||||
#ifdef _M_IX86
|
||||
EXTERN _KiSystemService:PROC
|
||||
#elif defined(_M_AMD64)
|
||||
|
@ -12,9 +21,10 @@ EXTERN KiZwSystemService:PROC
|
|||
|
||||
.code
|
||||
|
||||
SyscallId = 0
|
||||
#define SVC_(name, argcount) STUB_K name, argcount
|
||||
|
||||
#include <sysfuncs.h>
|
||||
|
||||
#endif
|
||||
|
||||
END
|
||||
|
|
|
@ -1,12 +1,23 @@
|
|||
|
||||
#include <asm.inc>
|
||||
#include <syscalls.inc>
|
||||
|
||||
#ifdef _M_ARM
|
||||
|
||||
TEXTAREA
|
||||
|
||||
#define SVC_(name, argcount) STUB_U name
|
||||
|
||||
#include <sysfuncs.h>
|
||||
|
||||
END
|
||||
|
||||
#else
|
||||
|
||||
.code
|
||||
|
||||
SyscallId = 0
|
||||
#define SVC_(name, argcount) STUB_U name, argcount
|
||||
|
||||
#include <sysfuncs.h>
|
||||
|
||||
END
|
||||
#endif
|
||||
|
|
|
@ -1,7 +1,18 @@
|
|||
|
||||
#include <asm.inc>
|
||||
#include <syscalls.inc>
|
||||
|
||||
#ifdef _M_ARM
|
||||
|
||||
TEXTAREA
|
||||
|
||||
#define SVC_(name, argcount) STUB_U name
|
||||
|
||||
#include "w32ksvc.h"
|
||||
|
||||
END
|
||||
|
||||
#else
|
||||
|
||||
.code
|
||||
|
||||
SyscallId = HEX(1000)
|
||||
|
@ -10,3 +21,5 @@ SyscallId = HEX(1000)
|
|||
#include "w32ksvc.h"
|
||||
|
||||
END
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// SVC_(<NAME>, <ARG_COUNT>)
|
||||
//
|
||||
// Funcs order should match Windows XP 5.1.2600 SP2
|
||||
// Note: these MUST be indented for the ARM assembler!
|
||||
//
|
||||
SVC_(GdiAbortDoc, 1)
|
||||
SVC_(GdiAbortPath, 1)
|
||||
|
|
Loading…
Reference in a new issue