windows-nt/Source/XPSP1/NT/base/ntos/ke/axp64/table.stb
2020-09-26 16:20:57 +08:00

84 lines
2.6 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 ) .quad 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" )