You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.5 KiB
146 lines
3.5 KiB
;++
|
|
;
|
|
; Copyright (c) 2000 Microsoft Corporation
|
|
;
|
|
; Module Name:
|
|
;
|
|
; sysstubs.asm
|
|
;
|
|
; Abstract:
|
|
;
|
|
; This module implements the system service dispatch stub procedures.
|
|
;
|
|
; Author:
|
|
;
|
|
; David N. Cutler (davec) 10-Jul-2000
|
|
;
|
|
; Environment:
|
|
;
|
|
; User or kernel mode.
|
|
;
|
|
;--
|
|
|
|
include ksamd64.inc
|
|
|
|
STUBS_BEGIN1 macro t
|
|
title t
|
|
endm
|
|
|
|
STUBS_BEGIN2 macro t
|
|
endm
|
|
|
|
STUBS_BEGIN3 macro t
|
|
endm
|
|
|
|
STUBS_BEGIN4 macro t
|
|
endm
|
|
|
|
STUBS_BEGIN5 macro t
|
|
endm
|
|
|
|
STUBS_BEGIN6 macro t
|
|
endm
|
|
|
|
STUBS_BEGIN7 macro t
|
|
endm
|
|
|
|
STUBS_BEGIN8 macro t
|
|
endm
|
|
|
|
STUBS_END macro t
|
|
end
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY1 macro ServiceNumber, Name, NumArgs
|
|
extern KiServiceLinkage:proc
|
|
extern KiSystemService:proc
|
|
NESTED_ENTRY Zw&Name, _TEXT$00
|
|
if DBG
|
|
mov [rsp]+08h, rcx
|
|
mov [rsp]+10h, rdx
|
|
mov [rsp]+18h, r8
|
|
mov [rsp]+20h, r9
|
|
endif
|
|
cli ; disable interrupts
|
|
mov rax, rsp ; save stack address
|
|
sub rsp, 16 ; alignment and dummy SS selector
|
|
pushq rax ; save previous stack pointer
|
|
pushfq ; push EFLAGS on stack
|
|
pushq KGDT64_R0_CODE ; push CS selector
|
|
lea rax, KiServiceLinkage ; push service linkage RIP
|
|
pushq rax ; push return address
|
|
mov eax, ServiceNumber ; set service number
|
|
jmp KiSystemService ; finish in service dispatcher
|
|
push_frame ; mark machine frame push
|
|
END_PROLOGUE
|
|
NESTED_END Zw&Name, _TEXT$00
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY2 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY3 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY4 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY5 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY6 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY7 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
SYSSTUBS_ENTRY8 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
|
|
USRSTUBS_ENTRY1 macro ServiceNumber, Name, NumArgs
|
|
altentry Nt&Name
|
|
endm
|
|
|
|
USRSTUBS_ENTRY2 macro ServiceNumber, Name, NumArgs
|
|
LEAF_ENTRY Zw&Name, _TEXT$00
|
|
ALTERNATE_ENTRY Nt&Name
|
|
if DBG
|
|
mov [rsp]+08h, rcx
|
|
mov [rsp]+10h, rdx
|
|
mov [rsp]+18h, r8
|
|
mov [rsp]+20h, r9
|
|
endif
|
|
mov r10, rcx
|
|
mov eax, ServiceNumber
|
|
syscall
|
|
ret
|
|
LEAF_END Zw&Name, _TEXT$00
|
|
endm
|
|
|
|
USRSTUBS_ENTRY3 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
USRSTUBS_ENTRY4 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
USRSTUBS_ENTRY5 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
USRSTUBS_ENTRY6 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
USRSTUBS_ENTRY7 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
USRSTUBS_ENTRY8 macro ServiceNumber, Name, NumArgs
|
|
endm
|
|
|
|
STUBS_BEGIN1 <"System Service Stub Procedures">
|
|
STUBS_BEGIN2 <"System Service Stub Procedures">
|
|
STUBS_BEGIN3 <"System Service Stub Procedures">
|
|
STUBS_BEGIN4 <"System Service Stub Procedures">
|
|
STUBS_BEGIN5 <"System Service Stub Procedures">
|
|
STUBS_BEGIN6 <"System Service Stub Procedures">
|
|
STUBS_BEGIN7 <"System Service Stub Procedures">
|
|
STUBS_BEGIN8 <"System Service Stub Procedures">
|