home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.0 / NeXTSTEP3.0.iso / NextDeveloper / Headers / mach / m68k / syscall_sw.h < prev    next >
Text File  |  1992-07-29  |  2KB  |  87 lines

  1. /* 
  2.  * Copyright (c) 1988 NeXT, Inc.
  3.  */
  4. /*
  5.  * HISTORY
  6.  *  1-Mar-90  Gregg Kellogg (gk) at NeXT
  7.  *    kern/syscall_sw.h defines traps with negative arguments,
  8.  *    changed kernel_trap() macro to turn that back into a positive
  9.  *    argument.
  10.  */
  11.  
  12. #ifndef    _MACH_M68K_SYSCALL_SW_
  13. #define    _MACH_M68K_SYSCALL_SW_    1
  14.  
  15. #define kernel_trap_args_0    ;
  16.  
  17. #define kernel_trap_args_1            \&Cqvl    a0@(4),d1;
  18.  
  19. #define kernel_trap_args_2            \
  20.     kernel_trap_args_1;            \
  21.     movl    a0@(8),d2;
  22.  
  23. #define kernel_trap_args_3            \
  24.     kernel_trap_args_2;            \
  25.     movl    a0@(12),d3;
  26.  
  27. #define kernel_trap_args_4            \
  28.     kernel_trap_args_3;            \
  29.     movl    a0@(16),d4;
  30.  
  31. #define kernel_trap_args_5            \
  32.     kernel_trap_args_4;            \
  33.     movl    a0@(20),d5;
  34.  
  35. #define kernel_trap_args_6            \
  36.     kernel_trap_args_5;            \
  37.     movl    a0@(24),d6;
  38.  
  39.  
  40. #define kernel_trap_args_7            \
  41.     kernel_trap_args_6;            \
  42.     movl    a0@(24),d7;
  43.  
  44. #define save_registers_0    ;
  45. #define save_registers_1    ;
  46. #define save_registers_2            \
  47.     movl    d2,sp@-
  48. #define save_registers_3            \
  49.     moveml    \#0x3000,sp@-
  50. #define save_registers_4            \
  51.     moveml    \#0x3800,sp@-
  52. #define save_registers_5            \
  53.     moveml    \#0x3c00,sp@-
  54. #define save_registers_6            \
  55.     moveml    \#0x3e00,sp@-
  56. #define save_registers_7            \
  57.     moveml    \#0x3f00,sp@-
  58.  
  59. #define restore_registers_0    ;
  60. #define restore_registers_1    ;
  61. #define restore_registers_2            \
  62.     movl    sp@+,d2
  63. #define restore_registers_3            \
  64.     moveml    sp@+,\#0xc
  65. #define restore_registers_4            \
  66.     moveml    sp@+,\#0x1c
  67. #define restore_registers_5            \
  68.     moveml    sp@+,\#0x3c
  69. #define restore_registers_6            \
  70.     moveml    sp@+,\#0x7c
  71. #define restore_registers_7            \
  72.     moveml    sp@+,\#0xfc
  73.  
  74. #define kernel_trap(name, number, args)        \
  75.     .globl    _##name;            \
  76. _##name:                    \
  77.     movl    sp,a0;                \
  78.     save_registers_##args;            \
  79.     kernel_trap_args_##args;        \
  80.     movl    \#-number,d0;            \
  81.     trap    \#3;                \
  82.     restore_registers_##args;        \
  83.     rts
  84.  
  85. #endif    _MACH_M68K_SYSCALL_SW_
  86.  
  87.