Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

84 lines
2.6 KiB

6 // This is the number of argument registers for Alpha (used by gensrv).
//++
//
// 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:
//
// Joe Notarangelo 08-Jul-1992
// alpha version
// - 6 argument registers for alpha
// - size of allocation for each table entry address = 64 bits
// (this was necessary with BL3 of the compiler, it may no
// longer be the case but this shouldn't hurt, the system
// service exception code will load long anyway)
//
// Thomas Van Baak (tvb) 04-Sep-1992
//
// The first line of this file was "6 8" which the new gensrv used
// to set the number of in-register arguments (6) and the size of a
// register (8).
//
// Now instead, the ARGTBL_ENTRY macro itself converts i386/Mips 4
// byte units into Alpha 8 byte units. This way, if an old version
// of gensrv is used, we still get the proper byte counts for Alpha.
//
//--
//
// 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 ) .rdata
#define TABLE_BEGIN2( t ) .align 4
#define TABLE_BEGIN3( t ) .globl KiServiceTable
#define TABLE_BEGIN4( t ) KiServiceTable:
#define TABLE_BEGIN5( t )
#define TABLE_BEGIN6( t )
#define TABLE_BEGIN7( t )
#define TABLE_BEGIN8( t )
#define TABLE_ENTRY( l,bias,numargs ) .long Nt##l+bias
#define TABLE_END( n ) .sdata ; .globl KiServiceLimit ; KiServiceLimit: .long n + 1
#define ARGTBL_BEGIN .rdata ; .align 4 ; .globl KiArgumentTable ; KiArgumentTable:
//
// Convert gensrv 4-byte units to Alpha 8-bytes-per-register units.
//
#define ARGTBL_ENTRY( e0,e1,e2,e3,e4,e5,e6,e7 ) \
.byte e0 *2, e1 *2, e2 *2, e3 *2, e4 *2, e5 *2, e6 *2, e7 *2
#define ARGTBL_END
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" )