74 lines
2.3 KiB
Plaintext
74 lines
2.3 KiB
Plaintext
7 // 8 is the actual number of argument registers
|
|
//++
|
|
//
|
|
// Copyright (c) 1989 Microsoft Corporation
|
|
//
|
|
// Module Name:
|
|
//
|
|
// systable.s
|
|
//
|
|
// Abstract:
|
|
//
|
|
// This module implements the system service dispatch table.
|
|
//
|
|
// Author:
|
|
//
|
|
// David N. Cutler (davec) 29-Apr-1989
|
|
//
|
|
// Environment:
|
|
//
|
|
// Kernel mode only.
|
|
//
|
|
// Revision History:
|
|
//
|
|
//--
|
|
|
|
//
|
|
// To add a system service simply add the name of the service to the below
|
|
// table. If the system service has in memory arguments, then immediately
|
|
// follow the name of the serice with a comma and following that the number
|
|
// of bytes of in memory arguments, e.g. CreateObject,40.
|
|
//
|
|
|
|
#define TABLE_BEGIN1( t ) .##sdata
|
|
#define TABLE_BEGIN2( t ) .##align 8
|
|
#define TABLE_BEGIN3( t ) .##global W32pServiceTableGp
|
|
#define TABLE_BEGIN4( t ) W32pServiceTableGp: data8 _gp
|
|
#define TABLE_BEGIN5( t ) .##global W32pServiceTable
|
|
#define TABLE_BEGIN6( t ) W32pServiceTable:
|
|
#define TABLE_BEGIN7( t )
|
|
#define TABLE_BEGIN8( t )
|
|
|
|
#ifdef _WIN64
|
|
#define TABLE_ENTRY( l,bias,numargs ) .##global Nt##l; .##type Nt##l, @function; data8 Nt##l+bias+((numargs%8) << 1)
|
|
#else
|
|
#define TABLE_ENTRY( l,bias,numargs ) .##global Nt##l; .##type Nt##l, @function; data4 Nt##l+bias
|
|
#endif
|
|
|
|
#define TABLE_END( n ) .##sdata ; .##global W32pServiceLimit ; W32pServiceLimit: data4 n + 1
|
|
|
|
|
|
#define ARGTBL_BEGIN .##sdata ; .##align 4 ; .##global W32pArgumentTable ; W32pArgumentTable:
|
|
|
|
#define ARGTBL_ENTRY( e0,e1,e2,e3,e4,e5,e6,e7 ) \
|
|
data1 e0,e1,e2,e3,e4,e5,e6,e7
|
|
#define ARGTBL_END
|
|
|
|
#define ERRTBL_BEGIN
|
|
|
|
#define ERRTBL_ENTRY( e0,e1,e2,e3,e4,e5,e6,e7 ) \
|
|
data1 e0,e1,e2,e3,e4,e5,e6,e7
|
|
#define ERRTBL_END
|
|
|
|
#define DECLARE_DISPATCH_COUNT( ServiceCount, ArgsCount) .##sdata ; .##align 4 ; .##global gDispatchTableValues ; gDispatchTableValues: data4 ServiceCount, ArgsCount
|
|
|
|
|
|
TABLE_BEGIN1( "System Service Dispatch Table" )
|
|
TABLE_BEGIN2( "System Service Dispatch Table" )
|
|
TABLE_BEGIN3( "System Service Dispatch Table" )
|
|
TABLE_BEGIN4( "System Service Dispatch Table" )
|
|
TABLE_BEGIN5( "System Service Dispatch Table" )
|
|
TABLE_BEGIN6( "System Service Dispatch Table" )
|
|
TABLE_BEGIN7( "System Service Dispatch Table" )
|
|
TABLE_BEGIN8( "System Service Dispatch Table" )
|