13 #define vdi_control_ptr(n) *((void**)(vdi_control +n))
14 #define vdi_intin_ptr(n) *((void**)(vdi_intin +n))
15 #define vdi_intout_long(n) *((long*) (vdi_intout +n))
17 #if defined(__GNUC__) && !defined(__NO_INLINE__)
20 _vdi_trap_esc (
VDIPB * vdipb,
21 long cntrl_0_1,
long cntrl_3,
long cntrl_5,
short handle)
34 :
"g"(vdipb),
"g"(cntrl_0_1),
"g"(cntrl_3),
"g"(cntrl_5),
"g"(handle)
35 :
"d0",
"d1",
"d2",
"a0",
"a1",
"a2",
"memory"
38 #define VDI_TRAP_ESC(vdipb, handle, opcode, subop, cntrl_1, cntrl_3) \
39 _vdi_trap_esc (&vdipb, (opcode##uL<<16)|cntrl_1, cntrl_3, subop, handle)
42 _vdi_trap_00 (
VDIPB * vdipb,
long cntrl_0_1,
short handle)
56 :
"g"(vdipb),
"g"(cntrl_0_1),
"g"(handle)
57 :
"d0",
"d1",
"d2",
"a0",
"a1",
"a2",
"memory"
60 #define VDI_TRAP_00(vdipb, handle, opcode) \
61 _vdi_trap_00 (&vdipb, (opcode##uL<<16), handle)
68 __regsused(
"d0/d1/a0/a1") void _vdi_trap_esc(
69 __reg("a0")
VDIPB *,__reg("d0")
long,__reg("d1")
long,
70 __reg("d2")
long,__reg("d3")
short) =
71 "\tmove.l\td2,-(sp)\n"
72 "\tmove.l\ta2,-(sp)\n"
74 "\tmovem.l\td0-d2,(a1)\n"
75 "\tmove.w\td3,12(a1)\n"
79 "\tmove.l\t(sp)+,a2\n"
82 #define VDI_TRAP_ESC(vdipb, handle, opcode, subop, cntrl_1, cntrl_3) \
83 _vdi_trap_esc (&vdipb, (opcode##uL<<16)|cntrl_1, cntrl_3, subop, handle)
85 __regsused(
"d0/d1/a0/a1") void _vdi_trap_00(
86 __reg("a0")VDIPB *,__reg("d0")
long,__reg("d1")
short) =
87 "\tmove.l\td2,-(sp)\n"
88 "\tmove.l\ta2,-(sp)\n"
90 "\tmove.l\td0,(a1)+\n"
92 "\tmove.l\td0,(a1)+\n"
93 "\tmove.l\td0,(a1)+\n"
98 "\tmove.l\t(sp)+,a2\n"
101 #define VDI_TRAP_00(vdipb, handle, opcode) \
102 _vdi_trap_00 (&vdipb, (opcode##uL<<16), handle)
106 #define VDI_TRAP_ESC(vdipb, handle, opcode, subop, cntrl_1, cntrl_3) \
107 vdipb.control[0] = opcode; \
108 vdipb.control[1] = cntrl_1; \
109 vdipb.control[3] = cntrl_3; \
110 vdipb.control[5] = subop; \
111 vdipb.control[6] = handle; \
114 #define VDI_TRAP_00(vdipb, handle, opcode) \
115 VDI_TRAP_ESC (vdipb, handle, opcode, 0, 0, 0)
120 #define VDI_TRAP(vdipb, handle, opcode, cntrl_1, cntrl_3) \
121 VDI_TRAP_ESC(vdipb, handle, opcode, 0, cntrl_1, cntrl_3)
123 #define VDI_PARAMS(a,b,c,d,e) \
125 vdi_params.control = a; \
126 vdi_params.intin = b; \
127 vdi_params.ptsin = c; \
128 vdi_params.intout = d; \
129 vdi_params.ptsout = e;
135 #define CHECK_NULLPTR 1
141 #define USE_VDI_DUMMY 1
145 extern short vdi_dummy[];
Definition: mt_gem.h:3020