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.

83 lines
2.6 KiB

  1. 6 // This is the number of argument registers for Alpha (used by gensrv).
  2. //++
  3. //
  4. // Copyright (c) 1989 Microsoft Corporation
  5. //
  6. // Module Name:
  7. //
  8. // systable.s
  9. //
  10. // Abstract:
  11. //
  12. // This module implements the system service dispatch table.
  13. //
  14. // Author:
  15. //
  16. // David N. Cutler (davec) 29-Apr-1989
  17. //
  18. // Environment:
  19. //
  20. // Kernel mode only.
  21. //
  22. // Revision History:
  23. //
  24. // Joe Notarangelo 08-Jul-1992
  25. // alpha version
  26. // - 6 argument registers for alpha
  27. // - size of allocation for each table entry address = 64 bits
  28. // (this was necessary with BL3 of the compiler, it may no
  29. // longer be the case but this shouldn't hurt, the system
  30. // service exception code will load long anyway)
  31. //
  32. // Thomas Van Baak (tvb) 04-Sep-1992
  33. //
  34. // The first line of this file was "6 8" which the new gensrv used
  35. // to set the number of in-register arguments (6) and the size of a
  36. // register (8).
  37. //
  38. // Now instead, the ARGTBL_ENTRY macro itself converts i386/Mips 4
  39. // byte units into Alpha 8 byte units. This way, if an old version
  40. // of gensrv is used, we still get the proper byte counts for Alpha.
  41. //
  42. //--
  43. //
  44. // To add a system service simply add the name of the service to the below
  45. // table. If the system service has in memory arguments, then immediately
  46. // follow the name of the serice with a comma and following that the number
  47. // of bytes of in memory arguments, e.g. CreateObject,40.
  48. //
  49. #define TABLE_BEGIN1( t ) .rdata
  50. #define TABLE_BEGIN2( t ) .align 4
  51. #define TABLE_BEGIN3( t ) .globl KiServiceTable
  52. #define TABLE_BEGIN4( t ) KiServiceTable:
  53. #define TABLE_BEGIN5( t )
  54. #define TABLE_BEGIN6( t )
  55. #define TABLE_BEGIN7( t )
  56. #define TABLE_BEGIN8( t )
  57. #define TABLE_ENTRY( l,bias,numargs ) .quad Nt##l+bias
  58. #define TABLE_END( n ) .sdata ; .globl KiServiceLimit ; KiServiceLimit: .long n + 1
  59. #define ARGTBL_BEGIN .rdata ; .align 4 ; .globl KiArgumentTable ; KiArgumentTable:
  60. //
  61. // Convert gensrv 4-byte units to Alpha 8-bytes-per-register units.
  62. //
  63. #define ARGTBL_ENTRY( e0,e1,e2,e3,e4,e5,e6,e7 ) \
  64. .byte e0 *2, e1 *2, e2 *2, e3 *2, e4 *2, e5 *2, e6 *2, e7 *2
  65. #define ARGTBL_END
  66. TABLE_BEGIN1( "System Service Dispatch Table" )
  67. TABLE_BEGIN2( "System Service Dispatch Table" )
  68. TABLE_BEGIN3( "System Service Dispatch Table" )
  69. TABLE_BEGIN4( "System Service Dispatch Table" )
  70. TABLE_BEGIN5( "System Service Dispatch Table" )
  71. TABLE_BEGIN6( "System Service Dispatch Table" )
  72. TABLE_BEGIN7( "System Service Dispatch Table" )
  73. TABLE_BEGIN8( "System Service Dispatch Table" )
  74.