1 #ifndef __INLINE_MACROS_H 2 #define __INLINE_MACROS_H 3 4 /* 5 MorphOS PowerPC inline macros 6 7 Copyright © 1999-2020 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EMUL_EMULINTERFACE_H 11 #include <emul/emulinterface.h> 12 #endif 13 #ifndef EMUL_EMULREGS_H 14 #include <emul/emulregs.h> 15 #endif 16 17 18 #define __CACHE_START(start) ((void *) ((unsigned long int) (start) & ~31)) 19 #define __CACHE_LENGTH(start,length) ({ unsigned long int __clstart = (unsigned long int) (start); (((length) + __clstart + 31) & ~31) - (__clstart & ~31); }) 20 21 22 #ifndef __MORPHOS_NODIRECTCALL 23 24 /* 25 * Use directcalls, faster. 26 */ 27 #define REG_d0 REG_D0 28 #define REG_d1 REG_D1 29 #define REG_d2 REG_D2 30 #define REG_d3 REG_D3 31 #define REG_d4 REG_D4 32 #define REG_d5 REG_D5 33 #define REG_d6 REG_D6 34 #define REG_d7 REG_D7 35 #define REG_a0 REG_A0 36 #define REG_a1 REG_A1 37 #define REG_a2 REG_A2 38 #define REG_a3 REG_A3 39 #define REG_a4 REG_A4 40 #define REG_a5 REG_A5 41 #define REG_a6 REG_A6 42 #define REG_a7 REG_A7 43 44 45 #define LP0(offs, rt, name, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 46 ({ \ 47 REG_A6 = (ULONG) (bn); \ 48 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 49 }) 50 51 #define LP0NR(offs, name, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 52 ({ \ 53 REG_A6 = (ULONG) (bn); \ 54 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 55 }) 56 57 #define LP1(offs, rt, name, t1, v1, r1, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 58 ({ \ 59 t1 _##name##_v1 = v1; \ 60 ULONG _##name##_b = (ULONG) (bn); \ 61 REG_##r1 = (ULONG) _##name##_v1; \ 62 REG_A6 = _##name##_b; \ 63 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 64 }) 65 66 #define LP1NR(offs, name, t1, v1, r1, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 67 ({ \ 68 t1 _##name##_v1 = v1; \ 69 ULONG _##name##_b = (ULONG) (bn); \ 70 REG_##r1 = (ULONG) _##name##_v1; \ 71 REG_A6 = _##name##_b; \ 72 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 73 }) 74 75 #define LP1FP(offs, rt, name, t1, v1, r1, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 76 ({ \ 77 typedef fpt; \ 78 t1 _##name##_v1 = v1; \ 79 ULONG _##name##_b = (ULONG) (bn); \ 80 REG_##r1 = (ULONG) _##name##_v1; \ 81 REG_A6 = _##name##_b; \ 82 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 83 }) 84 85 #define LP2(offs, rt, name, t1, v1, r1, t2, v2, r2, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 86 ({ \ 87 t1 _##name##_v1 = v1; \ 88 t2 _##name##_v2 = v2; \ 89 ULONG _##name##_b = (ULONG) (bn); \ 90 REG_##r1 = (ULONG) _##name##_v1; \ 91 REG_##r2 = (ULONG) _##name##_v2; \ 92 REG_A6 = _##name##_b; \ 93 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 94 }) 95 96 #define LP2NR(offs, name, t1, v1, r1, t2, v2, r2, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 97 ({ \ 98 t1 _##name##_v1 = v1; \ 99 t2 _##name##_v2 = v2; \ 100 ULONG _##name##_b = (ULONG) (bn); \ 101 REG_##r1 = (ULONG) _##name##_v1; \ 102 REG_##r2 = (ULONG) _##name##_v2; \ 103 REG_A6 = _##name##_b; \ 104 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 105 }) 106 107 #define LP2UB(offs, rt, name, t1, v1, r1, t2, v2, r2, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 108 ({ \ 109 t1 _##name##_v1 = v1; \ 110 t2 _##name##_v2 = v2; \ 111 REG_##r1 = (ULONG) _##name##_v1; \ 112 REG_##r2 = (ULONG) _##name##_v2; \ 113 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 114 }) 115 116 #define LP2FP(offs, rt, name, t1, v1, r1, t2, v2, r2, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 117 ({ \ 118 typedef fpt; \ 119 t1 _##name##_v1 = v1; \ 120 t2 _##name##_v2 = v2; \ 121 ULONG _##name##_b = (ULONG) (bn); \ 122 REG_##r1 = (ULONG) _##name##_v1; \ 123 REG_##r2 = (ULONG) _##name##_v2; \ 124 REG_A6 = _##name##_b; \ 125 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 126 }) 127 128 #define LP3(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 129 ({ \ 130 t1 _##name##_v1 = v1; \ 131 t2 _##name##_v2 = v2; \ 132 t3 _##name##_v3 = v3; \ 133 ULONG _##name##_b = (ULONG) (bn); \ 134 REG_##r1 = (ULONG) _##name##_v1; \ 135 REG_##r2 = (ULONG) _##name##_v2; \ 136 REG_##r3 = (ULONG) _##name##_v3; \ 137 REG_A6 = _##name##_b; \ 138 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 139 }) 140 141 #define LP3NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 142 ({ \ 143 t1 _##name##_v1 = v1; \ 144 t2 _##name##_v2 = v2; \ 145 t3 _##name##_v3 = v3; \ 146 ULONG _##name##_b = (ULONG) (bn); \ 147 REG_##r1 = (ULONG) _##name##_v1; \ 148 REG_##r2 = (ULONG) _##name##_v2; \ 149 REG_##r3 = (ULONG) _##name##_v3; \ 150 REG_A6 = _##name##_b; \ 151 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 152 }) 153 154 #define LP3UB(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 155 ({ \ 156 t1 _##name##_v1 = v1; \ 157 t2 _##name##_v2 = v2; \ 158 t3 _##name##_v3 = v3; \ 159 REG_##r1 = (ULONG) _##name##_v1; \ 160 REG_##r2 = (ULONG) _##name##_v2; \ 161 REG_##r3 = (ULONG) _##name##_v3; \ 162 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 163 }) 164 165 #define LP3NRUB(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 166 ({ \ 167 t1 _##name##_v1 = v1; \ 168 t2 _##name##_v2 = v2; \ 169 t3 _##name##_v3 = v3; \ 170 REG_##r1 = (ULONG) _##name##_v1; \ 171 REG_##r2 = (ULONG) _##name##_v2; \ 172 REG_##r3 = (ULONG) _##name##_v3; \ 173 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 174 }) 175 176 #define LP3FP(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 177 ({ \ 178 typedef fpt; \ 179 t1 _##name##_v1 = v1; \ 180 t2 _##name##_v2 = v2; \ 181 t3 _##name##_v3 = v3; \ 182 ULONG _##name##_b = (ULONG) (bn); \ 183 REG_##r1 = (ULONG) _##name##_v1; \ 184 REG_##r2 = (ULONG) _##name##_v2; \ 185 REG_##r3 = (ULONG) _##name##_v3; \ 186 REG_A6 = _##name##_b; \ 187 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs);\ 188 }) 189 190 #define LP3NRFP(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 191 ({ \ 192 typedef fpt; \ 193 t1 _##name##_v1 = v1; \ 194 t2 _##name##_v2 = v2; \ 195 t3 _##name##_v3 = v3; \ 196 ULONG _##name##_b = (ULONG) (bn); \ 197 REG_##r1 = (ULONG) _##name##_v1; \ 198 REG_##r2 = (ULONG) _##name##_v2; \ 199 REG_##r3 = (ULONG) _##name##_v3; \ 200 REG_A6 = _##name##_b; \ 201 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 202 }) 203 204 #define LP4(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 205 ({ \ 206 t1 _##name##_v1 = v1; \ 207 t2 _##name##_v2 = v2; \ 208 t3 _##name##_v3 = v3; \ 209 t4 _##name##_v4 = v4; \ 210 ULONG _##name##_b = (ULONG) (bn); \ 211 REG_##r1 = (ULONG) _##name##_v1; \ 212 REG_##r2 = (ULONG) _##name##_v2; \ 213 REG_##r3 = (ULONG) _##name##_v3; \ 214 REG_##r4 = (ULONG) _##name##_v4; \ 215 REG_A6 = _##name##_b; \ 216 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 217 }) 218 219 #define LP4NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 220 ({ \ 221 t1 _##name##_v1 = v1; \ 222 t2 _##name##_v2 = v2; \ 223 t3 _##name##_v3 = v3; \ 224 t4 _##name##_v4 = v4; \ 225 ULONG _##name##_b = (ULONG) (bn); \ 226 REG_##r1 = (ULONG) _##name##_v1; \ 227 REG_##r2 = (ULONG) _##name##_v2; \ 228 REG_##r3 = (ULONG) _##name##_v3; \ 229 REG_##r4 = (ULONG) _##name##_v4; \ 230 REG_A6 = _##name##_b; \ 231 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 232 }) 233 234 #define LP4FP(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 235 ({ \ 236 typedef fpt; \ 237 t1 _##name##_v1 = v1; \ 238 t2 _##name##_v2 = v2; \ 239 t3 _##name##_v3 = v3; \ 240 t4 _##name##_v4 = v4; \ 241 ULONG _##name##_b = (ULONG) (bn); \ 242 REG_##r1 = (ULONG) _##name##_v1; \ 243 REG_##r2 = (ULONG) _##name##_v2; \ 244 REG_##r3 = (ULONG) _##name##_v3; \ 245 REG_##r4 = (ULONG) _##name##_v4; \ 246 REG_A6 = _##name##_b; \ 247 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 248 }) 249 250 #define LP5(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 251 ({ \ 252 t1 _##name##_v1 = v1; \ 253 t2 _##name##_v2 = v2; \ 254 t3 _##name##_v3 = v3; \ 255 t4 _##name##_v4 = v4; \ 256 t5 _##name##_v5 = v5; \ 257 ULONG _##name##_b = (ULONG) (bn); \ 258 REG_##r1 = (ULONG) _##name##_v1; \ 259 REG_##r2 = (ULONG) _##name##_v2; \ 260 REG_##r3 = (ULONG) _##name##_v3; \ 261 REG_##r4 = (ULONG) _##name##_v4; \ 262 REG_##r5 = (ULONG) _##name##_v5; \ 263 REG_A6 = _##name##_b; \ 264 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 265 }) 266 267 #define LP5NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 268 ({ \ 269 t1 _##name##_v1 = v1; \ 270 t2 _##name##_v2 = v2; \ 271 t3 _##name##_v3 = v3; \ 272 t4 _##name##_v4 = v4; \ 273 t5 _##name##_v5 = v5; \ 274 ULONG _##name##_b = (ULONG) (bn); \ 275 REG_##r1 = (ULONG) _##name##_v1; \ 276 REG_##r2 = (ULONG) _##name##_v2; \ 277 REG_##r3 = (ULONG) _##name##_v3; \ 278 REG_##r4 = (ULONG) _##name##_v4; \ 279 REG_##r5 = (ULONG) _##name##_v5; \ 280 REG_A6 = _##name##_b; \ 281 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 282 }) 283 284 #define LP5FP(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 285 ({ \ 286 typedef fpt; \ 287 t1 _##name##_v1 = v1; \ 288 t2 _##name##_v2 = v2; \ 289 t3 _##name##_v3 = v3; \ 290 t4 _##name##_v4 = v4; \ 291 t5 _##name##_v5 = v5; \ 292 ULONG _##name##_b = (ULONG) (bn); \ 293 REG_##r1 = (ULONG) _##name##_v1; \ 294 REG_##r2 = (ULONG) _##name##_v2; \ 295 REG_##r3 = (ULONG) _##name##_v3; \ 296 REG_##r4 = (ULONG) _##name##_v4; \ 297 REG_##r5 = (ULONG) _##name##_v5; \ 298 REG_A6 = _##name##_b; \ 299 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 300 }) 301 302 #define LP6(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 303 ({ \ 304 t1 _##name##_v1 = v1; \ 305 t2 _##name##_v2 = v2; \ 306 t3 _##name##_v3 = v3; \ 307 t4 _##name##_v4 = v4; \ 308 t5 _##name##_v5 = v5; \ 309 t6 _##name##_v6 = v6; \ 310 ULONG _##name##_b = (ULONG) (bn); \ 311 REG_##r1 = (ULONG) _##name##_v1; \ 312 REG_##r2 = (ULONG) _##name##_v2; \ 313 REG_##r3 = (ULONG) _##name##_v3; \ 314 REG_##r4 = (ULONG) _##name##_v4; \ 315 REG_##r5 = (ULONG) _##name##_v5; \ 316 REG_##r6 = (ULONG) _##name##_v6; \ 317 REG_A6 = _##name##_b; \ 318 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 319 }) 320 321 #define LP6NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 322 ({ \ 323 t1 _##name##_v1 = v1; \ 324 t2 _##name##_v2 = v2; \ 325 t3 _##name##_v3 = v3; \ 326 t4 _##name##_v4 = v4; \ 327 t5 _##name##_v5 = v5; \ 328 t6 _##name##_v6 = v6; \ 329 ULONG _##name##_b = (ULONG) (bn); \ 330 REG_##r1 = (ULONG) _##name##_v1; \ 331 REG_##r2 = (ULONG) _##name##_v2; \ 332 REG_##r3 = (ULONG) _##name##_v3; \ 333 REG_##r4 = (ULONG) _##name##_v4; \ 334 REG_##r5 = (ULONG) _##name##_v5; \ 335 REG_##r6 = (ULONG) _##name##_v6; \ 336 REG_A6 = _##name##_b; \ 337 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 338 }) 339 340 #define LP7(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 341 ({ \ 342 t1 _##name##_v1 = v1; \ 343 t2 _##name##_v2 = v2; \ 344 t3 _##name##_v3 = v3; \ 345 t4 _##name##_v4 = v4; \ 346 t5 _##name##_v5 = v5; \ 347 t6 _##name##_v6 = v6; \ 348 t7 _##name##_v7 = v7; \ 349 ULONG _##name##_b = (ULONG) (bn); \ 350 REG_##r1 = (ULONG) _##name##_v1; \ 351 REG_##r2 = (ULONG) _##name##_v2; \ 352 REG_##r3 = (ULONG) _##name##_v3; \ 353 REG_##r4 = (ULONG) _##name##_v4; \ 354 REG_##r5 = (ULONG) _##name##_v5; \ 355 REG_##r6 = (ULONG) _##name##_v6; \ 356 REG_##r7 = (ULONG) _##name##_v7; \ 357 REG_A6 = _##name##_b; \ 358 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 359 }) 360 361 #define LP7NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 362 ({ \ 363 t1 _##name##_v1 = v1; \ 364 t2 _##name##_v2 = v2; \ 365 t3 _##name##_v3 = v3; \ 366 t4 _##name##_v4 = v4; \ 367 t5 _##name##_v5 = v5; \ 368 t6 _##name##_v6 = v6; \ 369 t7 _##name##_v7 = v7; \ 370 ULONG _##name##_b = (ULONG) (bn); \ 371 REG_##r1 = (ULONG) _##name##_v1; \ 372 REG_##r2 = (ULONG) _##name##_v2; \ 373 REG_##r3 = (ULONG) _##name##_v3; \ 374 REG_##r4 = (ULONG) _##name##_v4; \ 375 REG_##r5 = (ULONG) _##name##_v5; \ 376 REG_##r6 = (ULONG) _##name##_v6; \ 377 REG_##r7 = (ULONG) _##name##_v7; \ 378 REG_A6 = _##name##_b; \ 379 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 380 }) 381 382 #define LP8(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 383 ({ \ 384 t1 _##name##_v1 = v1; \ 385 t2 _##name##_v2 = v2; \ 386 t3 _##name##_v3 = v3; \ 387 t4 _##name##_v4 = v4; \ 388 t5 _##name##_v5 = v5; \ 389 t6 _##name##_v6 = v6; \ 390 t7 _##name##_v7 = v7; \ 391 t8 _##name##_v8 = v8; \ 392 ULONG _##name##_b = (ULONG) (bn); \ 393 REG_##r1 = (ULONG) _##name##_v1; \ 394 REG_##r2 = (ULONG) _##name##_v2; \ 395 REG_##r3 = (ULONG) _##name##_v3; \ 396 REG_##r4 = (ULONG) _##name##_v4; \ 397 REG_##r5 = (ULONG) _##name##_v5; \ 398 REG_##r6 = (ULONG) _##name##_v6; \ 399 REG_##r7 = (ULONG) _##name##_v7; \ 400 REG_##r8 = (ULONG) _##name##_v8; \ 401 REG_A6 = _##name##_b; \ 402 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 403 }) 404 405 #define LP8NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 406 ({ \ 407 t1 _##name##_v1 = v1; \ 408 t2 _##name##_v2 = v2; \ 409 t3 _##name##_v3 = v3; \ 410 t4 _##name##_v4 = v4; \ 411 t5 _##name##_v5 = v5; \ 412 t6 _##name##_v6 = v6; \ 413 t7 _##name##_v7 = v7; \ 414 t8 _##name##_v8 = v8; \ 415 ULONG _##name##_b = (ULONG) (bn); \ 416 REG_##r1 = (ULONG) _##name##_v1; \ 417 REG_##r2 = (ULONG) _##name##_v2; \ 418 REG_##r3 = (ULONG) _##name##_v3; \ 419 REG_##r4 = (ULONG) _##name##_v4; \ 420 REG_##r5 = (ULONG) _##name##_v5; \ 421 REG_##r6 = (ULONG) _##name##_v6; \ 422 REG_##r7 = (ULONG) _##name##_v7; \ 423 REG_##r8 = (ULONG) _##name##_v8; \ 424 REG_A6 = _##name##_b; \ 425 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 426 }) 427 428 #define LP9(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 429 ({ \ 430 t1 _##name##_v1 = v1; \ 431 t2 _##name##_v2 = v2; \ 432 t3 _##name##_v3 = v3; \ 433 t4 _##name##_v4 = v4; \ 434 t5 _##name##_v5 = v5; \ 435 t6 _##name##_v6 = v6; \ 436 t7 _##name##_v7 = v7; \ 437 t8 _##name##_v8 = v8; \ 438 t9 _##name##_v9 = v9; \ 439 ULONG _##name##_b = (ULONG) (bn); \ 440 REG_##r1 = (ULONG) _##name##_v1; \ 441 REG_##r2 = (ULONG) _##name##_v2; \ 442 REG_##r3 = (ULONG) _##name##_v3; \ 443 REG_##r4 = (ULONG) _##name##_v4; \ 444 REG_##r5 = (ULONG) _##name##_v5; \ 445 REG_##r6 = (ULONG) _##name##_v6; \ 446 REG_##r7 = (ULONG) _##name##_v7; \ 447 REG_##r8 = (ULONG) _##name##_v8; \ 448 REG_##r9 = (ULONG) _##name##_v9; \ 449 REG_A6 = _##name##_b; \ 450 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 451 }) 452 453 #define LP9NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 454 ({ \ 455 t1 _##name##_v1 = v1; \ 456 t2 _##name##_v2 = v2; \ 457 t3 _##name##_v3 = v3; \ 458 t4 _##name##_v4 = v4; \ 459 t5 _##name##_v5 = v5; \ 460 t6 _##name##_v6 = v6; \ 461 t7 _##name##_v7 = v7; \ 462 t8 _##name##_v8 = v8; \ 463 t9 _##name##_v9 = v9; \ 464 ULONG _##name##_b = (ULONG) (bn); \ 465 REG_##r1 = (ULONG) _##name##_v1; \ 466 REG_##r2 = (ULONG) _##name##_v2; \ 467 REG_##r3 = (ULONG) _##name##_v3; \ 468 REG_##r4 = (ULONG) _##name##_v4; \ 469 REG_##r5 = (ULONG) _##name##_v5; \ 470 REG_##r6 = (ULONG) _##name##_v6; \ 471 REG_##r7 = (ULONG) _##name##_v7; \ 472 REG_##r8 = (ULONG) _##name##_v8; \ 473 REG_##r9 = (ULONG) _##name##_v9; \ 474 REG_A6 = _##name##_b; \ 475 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 476 }) 477 478 #define LP10(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, ta, va, ra, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 479 ({ \ 480 t1 _##name##_v1 = v1; \ 481 t2 _##name##_v2 = v2; \ 482 t3 _##name##_v3 = v3; \ 483 t4 _##name##_v4 = v4; \ 484 t5 _##name##_v5 = v5; \ 485 t6 _##name##_v6 = v6; \ 486 t7 _##name##_v7 = v7; \ 487 t8 _##name##_v8 = v8; \ 488 t9 _##name##_v9 = v9; \ 489 ta _##name##_va = va; \ 490 ULONG _##name##_b = (ULONG) (bn); \ 491 REG_##r1 = (ULONG) _##name##_v1; \ 492 REG_##r2 = (ULONG) _##name##_v2; \ 493 REG_##r3 = (ULONG) _##name##_v3; \ 494 REG_##r4 = (ULONG) _##name##_v4; \ 495 REG_##r5 = (ULONG) _##name##_v5; \ 496 REG_##r6 = (ULONG) _##name##_v6; \ 497 REG_##r7 = (ULONG) _##name##_v7; \ 498 REG_##r8 = (ULONG) _##name##_v8; \ 499 REG_##r9 = (ULONG) _##name##_v9; \ 500 REG_##ra = (ULONG) _##name##_va; \ 501 REG_A6 = _##name##_b; \ 502 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 503 }) 504 505 #define LP10NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, ta, va, ra, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 506 ({ \ 507 t1 _##name##_v1 = v1; \ 508 t2 _##name##_v2 = v2; \ 509 t3 _##name##_v3 = v3; \ 510 t4 _##name##_v4 = v4; \ 511 t5 _##name##_v5 = v5; \ 512 t6 _##name##_v6 = v6; \ 513 t7 _##name##_v7 = v7; \ 514 t8 _##name##_v8 = v8; \ 515 t9 _##name##_v9 = v9; \ 516 ta _##name##_va = va; \ 517 ULONG _##name##_b = (ULONG) (bn); \ 518 REG_##r1 = (ULONG) _##name##_v1; \ 519 REG_##r2 = (ULONG) _##name##_v2; \ 520 REG_##r3 = (ULONG) _##name##_v3; \ 521 REG_##r4 = (ULONG) _##name##_v4; \ 522 REG_##r5 = (ULONG) _##name##_v5; \ 523 REG_##r6 = (ULONG) _##name##_v6; \ 524 REG_##r7 = (ULONG) _##name##_v7; \ 525 REG_##r8 = (ULONG) _##name##_v8; \ 526 REG_##r9 = (ULONG) _##name##_v9; \ 527 REG_##ra = (ULONG) _##name##_va; \ 528 REG_A6 = _##name##_b; \ 529 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 530 }) 531 532 #define LP11(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, ta, va, ra, tb, vb, rb, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 533 ({ \ 534 t1 _##name##_v1 = v1; \ 535 t2 _##name##_v2 = v2; \ 536 t3 _##name##_v3 = v3; \ 537 t4 _##name##_v4 = v4; \ 538 t5 _##name##_v5 = v5; \ 539 t6 _##name##_v6 = v6; \ 540 t7 _##name##_v7 = v7; \ 541 t8 _##name##_v8 = v8; \ 542 t9 _##name##_v9 = v9; \ 543 ta _##name##_va = va; \ 544 tb _##name##_vb = vb; \ 545 ULONG _##name##_b = (ULONG) (bn); \ 546 REG_##r1 = (ULONG) _##name##_v1; \ 547 REG_##r2 = (ULONG) _##name##_v2; \ 548 REG_##r3 = (ULONG) _##name##_v3; \ 549 REG_##r4 = (ULONG) _##name##_v4; \ 550 REG_##r5 = (ULONG) _##name##_v5; \ 551 REG_##r6 = (ULONG) _##name##_v6; \ 552 REG_##r7 = (ULONG) _##name##_v7; \ 553 REG_##r8 = (ULONG) _##name##_v8; \ 554 REG_##r9 = (ULONG) _##name##_v9; \ 555 REG_##ra = (ULONG) _##name##_va; \ 556 REG_##rb = (ULONG) _##name##_vb; \ 557 REG_A6 = _##name##_b; \ 558 (rt) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 559 }) 560 561 #define LP11NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, ta, va, ra, tb, vb, rb, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 562 ({ \ 563 t1 _##name##_v1 = v1; \ 564 t2 _##name##_v2 = v2; \ 565 t3 _##name##_v3 = v3; \ 566 t4 _##name##_v4 = v4; \ 567 t5 _##name##_v5 = v5; \ 568 t6 _##name##_v6 = v6; \ 569 t7 _##name##_v7 = v7; \ 570 t8 _##name##_v8 = v8; \ 571 t9 _##name##_v9 = v9; \ 572 ta _##name##_va = va; \ 573 tb _##name##_vb = vb; \ 574 ULONG _##name##_b = (ULONG) (bn); \ 575 REG_##r1 = (ULONG) _##name##_v1; \ 576 REG_##r2 = (ULONG) _##name##_v2; \ 577 REG_##r3 = (ULONG) _##name##_v3; \ 578 REG_##r4 = (ULONG) _##name##_v4; \ 579 REG_##r5 = (ULONG) _##name##_v5; \ 580 REG_##r6 = (ULONG) _##name##_v6; \ 581 REG_##r7 = (ULONG) _##name##_v7; \ 582 REG_##r8 = (ULONG) _##name##_v8; \ 583 REG_##r9 = (ULONG) _##name##_v9; \ 584 REG_##ra = (ULONG) _##name##_va; \ 585 REG_##rb = (ULONG) _##name##_vb; \ 586 REG_A6 = _##name##_b; \ 587 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 588 }) 589 590 #define LP12NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, ta, va, ra, tb, vb, rb, tc, vc, rc, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 591 ({ \ 592 t1 _##name##_v1 = v1; \ 593 t2 _##name##_v2 = v2; \ 594 t3 _##name##_v3 = v3; \ 595 t4 _##name##_v4 = v4; \ 596 t5 _##name##_v5 = v5; \ 597 t6 _##name##_v6 = v6; \ 598 t7 _##name##_v7 = v7; \ 599 t8 _##name##_v8 = v8; \ 600 t9 _##name##_v9 = v9; \ 601 ta _##name##_va = va; \ 602 tb _##name##_vb = vb; \ 603 tc _##name##_vc = vc; \ 604 ULONG _##name##_b = (ULONG) (bn); \ 605 REG_##r1 = (ULONG) _##name##_v1; \ 606 REG_##r2 = (ULONG) _##name##_v2; \ 607 REG_##r3 = (ULONG) _##name##_v3; \ 608 REG_##r4 = (ULONG) _##name##_v4; \ 609 REG_##r5 = (ULONG) _##name##_v5; \ 610 REG_##r6 = (ULONG) _##name##_v6; \ 611 REG_##r7 = (ULONG) _##name##_v7; \ 612 REG_##r8 = (ULONG) _##name##_v8; \ 613 REG_##r9 = (ULONG) _##name##_v9; \ 614 REG_##ra = (ULONG) _##name##_va; \ 615 REG_##rb = (ULONG) _##name##_vb; \ 616 REG_##rc = (ULONG) _##name##_vc; \ 617 REG_A6 = _##name##_b; \ 618 (void) (*MyEmulHandle->EmulCallDirectOS)(-offs); \ 619 }) 620 621 #else 622 623 #define LP0(offs, rt, name, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 624 ({ \ 625 struct EmulCaos _##name##_caos; \ 626 _##name##_caos.reg_a6 = (ULONG) (bn); \ 627 _##name##_caos.caos_Un.Offset = -(offs); \ 628 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 629 }) 630 631 #define LP0NR(offs, name, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 632 ({ \ 633 struct EmulCaos _##name##_caos; \ 634 _##name##_caos.reg_a6 = (ULONG) (bn); \ 635 _##name##_caos.caos_Un.Offset = -(offs); \ 636 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 637 }) 638 639 #define LP1(offs, rt, name, t1, v1, r1, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 640 ({ \ 641 struct EmulCaos _##name##_caos; \ 642 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 643 _##name##_caos.reg_a6 = (ULONG) (bn); \ 644 _##name##_caos.caos_Un.Offset = -(offs); \ 645 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 646 }) 647 648 #define LP1NR(offs, name, t1, v1, r1, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 649 ({ \ 650 struct EmulCaos _##name##_caos; \ 651 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 652 _##name##_caos.reg_a6 = (ULONG) (bn); \ 653 _##name##_caos.caos_Un.Offset = -(offs); \ 654 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 655 }) 656 657 #define LP1FP(offs, rt, name, t1, v1, r1, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 658 ({ \ 659 typedef fpt; \ 660 struct EmulCaos _##name##_caos; \ 661 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 662 _##name##_caos.reg_a6 = (ULONG) (bn); \ 663 _##name##_caos.caos_Un.Offset = -(offs); \ 664 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 665 }) 666 667 #define LP2(offs, rt, name, t1, v1, r1, t2, v2, r2, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 668 ({ \ 669 struct EmulCaos _##name##_caos; \ 670 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 671 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 672 _##name##_caos.reg_a6 = (ULONG) (bn); \ 673 _##name##_caos.caos_Un.Offset = -(offs); \ 674 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 675 }) 676 677 #define LP2NR(offs, name, t1, v1, r1, t2, v2, r2, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 678 ({ \ 679 struct EmulCaos _##name##_caos; \ 680 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 681 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 682 _##name##_caos.reg_a6 = (ULONG) (bn); \ 683 _##name##_caos.caos_Un.Offset = -(offs); \ 684 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 685 }) 686 687 #define LP2UB(offs, rt, name, t1, v1, r1, t2, v2, r2, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 688 ({ \ 689 struct EmulCaos _##name##_caos; \ 690 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 691 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 692 _##name##_caos.caos_Un.Offset = -(offs); \ 693 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 694 }) 695 696 #define LP2FP(offs, rt, name, t1, v1, r1, t2, v2, r2, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 697 ({ \ 698 typedef fpt; \ 699 struct EmulCaos _##name##_caos; \ 700 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 701 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 702 _##name##_caos.reg_a6 = (ULONG) (bn); \ 703 _##name##_caos.caos_Un.Offset = -(offs); \ 704 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 705 }) 706 707 #define LP3(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 708 ({ \ 709 struct EmulCaos _##name##_caos; \ 710 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 711 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 712 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 713 _##name##_caos.reg_a6 = (ULONG) (bn); \ 714 _##name##_caos.caos_Un.Offset = -(offs); \ 715 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 716 }) 717 718 #define LP3NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 719 ({ \ 720 struct EmulCaos _##name##_caos; \ 721 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 722 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 723 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 724 _##name##_caos.reg_a6 = (ULONG) (bn); \ 725 _##name##_caos.caos_Un.Offset = -(offs); \ 726 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 727 }) 728 729 #define LP3UB(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 730 ({ \ 731 struct EmulCaos _##name##_caos; \ 732 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 733 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 734 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 735 _##name##_caos.caos_Un.Offset = -(offs); \ 736 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 737 }) 738 739 #define LP3NRUB(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 740 ({ \ 741 struct EmulCaos _##name##_caos; \ 742 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 743 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 744 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 745 _##name##_caos.caos_Un.Offset = -(offs); \ 746 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 747 }) 748 749 #define LP3FP(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 750 ({ \ 751 typedef fpt; \ 752 struct EmulCaos _##name##_caos; \ 753 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 754 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 755 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 756 _##name##_caos.reg_a6 = (ULONG) (bn); \ 757 _##name##_caos.caos_Un.Offset = -(offs); \ 758 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 759 }) 760 761 #define LP3NRFP(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 762 ({ \ 763 typedef fpt; \ 764 struct EmulCaos _##name##_caos; \ 765 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 766 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 767 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 768 _##name##_caos.reg_a6 = (ULONG) (bn); \ 769 _##name##_caos.caos_Un.Offset = -(offs); \ 770 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 771 }) 772 773 #define LP4(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 774 ({ \ 775 struct EmulCaos _##name##_caos; \ 776 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 777 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 778 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 779 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 780 _##name##_caos.reg_a6 = (ULONG) (bn); \ 781 _##name##_caos.caos_Un.Offset = -(offs); \ 782 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 783 }) 784 785 #define LP4NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 786 ({ \ 787 struct EmulCaos _##name##_caos; \ 788 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 789 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 790 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 791 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 792 _##name##_caos.reg_a6 = (ULONG) (bn); \ 793 _##name##_caos.caos_Un.Offset = -(offs); \ 794 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 795 }) 796 797 #define LP4FP(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 798 ({ \ 799 typedef fpt; \ 800 struct EmulCaos _##name##_caos; \ 801 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 802 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 803 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 804 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 805 _##name##_caos.reg_a6 = (ULONG) (bn); \ 806 _##name##_caos.caos_Un.Offset = -(offs); \ 807 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 808 }) 809 810 #define LP5(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 811 ({ \ 812 struct EmulCaos _##name##_caos; \ 813 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 814 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 815 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 816 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 817 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 818 _##name##_caos.reg_a6 = (ULONG) (bn); \ 819 _##name##_caos.caos_Un.Offset = -(offs); \ 820 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 821 }) 822 823 #define LP5NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 824 ({ \ 825 struct EmulCaos _##name##_caos; \ 826 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 827 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 828 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 829 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 830 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 831 _##name##_caos.reg_a6 = (ULONG) (bn); \ 832 _##name##_caos.caos_Un.Offset = -(offs); \ 833 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 834 }) 835 836 #define LP5FP(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, bt, bn, fpt, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 837 ({ \ 838 typedef fpt; \ 839 struct EmulCaos _##name##_caos; \ 840 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 841 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 842 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 843 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 844 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 845 _##name##_caos.reg_a6 = (ULONG) (bn); \ 846 _##name##_caos.caos_Un.Offset = -(offs); \ 847 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 848 }) 849 850 #define LP6(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 851 ({ \ 852 struct EmulCaos _##name##_caos; \ 853 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 854 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 855 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 856 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 857 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 858 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 859 _##name##_caos.reg_a6 = (ULONG) (bn); \ 860 _##name##_caos.caos_Un.Offset = -(offs); \ 861 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 862 }) 863 864 #define LP6NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 865 ({ \ 866 struct EmulCaos _##name##_caos; \ 867 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 868 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 869 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 870 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 871 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 872 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 873 _##name##_caos.reg_a6 = (ULONG) (bn); \ 874 _##name##_caos.caos_Un.Offset = -(offs); \ 875 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 876 }) 877 878 #define LP7(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 879 ({ \ 880 struct EmulCaos _##name##_caos; \ 881 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 882 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 883 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 884 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 885 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 886 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 887 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 888 _##name##_caos.reg_a6 = (ULONG) (bn); \ 889 _##name##_caos.caos_Un.Offset = -(offs); \ 890 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 891 }) 892 893 #define LP7NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 894 ({ \ 895 struct EmulCaos _##name##_caos; \ 896 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 897 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 898 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 899 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 900 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 901 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 902 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 903 _##name##_caos.reg_a6 = (ULONG) (bn); \ 904 _##name##_caos.caos_Un.Offset = -(offs); \ 905 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 906 }) 907 908 #define LP8(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 909 ({ \ 910 struct EmulCaos _##name##_caos; \ 911 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 912 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 913 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 914 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 915 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 916 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 917 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 918 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 919 _##name##_caos.reg_a6 = (ULONG) (bn); \ 920 _##name##_caos.caos_Un.Offset = -(offs); \ 921 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 922 }) 923 924 #define LP8NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 925 ({ \ 926 struct EmulCaos _##name##_caos; \ 927 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 928 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 929 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 930 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 931 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 932 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 933 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 934 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 935 _##name##_caos.reg_a6 = (ULONG) (bn); \ 936 _##name##_caos.caos_Un.Offset = -(offs); \ 937 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 938 }) 939 940 #define LP9(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 941 ({ \ 942 struct EmulCaos _##name##_caos; \ 943 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 944 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 945 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 946 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 947 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 948 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 949 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 950 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 951 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 952 _##name##_caos.reg_a6 = (ULONG) (bn); \ 953 _##name##_caos.caos_Un.Offset = -(offs); \ 954 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 955 }) 956 957 #define LP9NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 958 ({ \ 959 struct EmulCaos _##name##_caos; \ 960 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 961 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 962 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 963 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 964 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 965 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 966 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 967 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 968 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 969 _##name##_caos.reg_a6 = (ULONG) (bn); \ 970 _##name##_caos.caos_Un.Offset = -(offs); \ 971 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 972 }) 973 974 #define LP10(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, t10, v10, r10, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 975 ({ \ 976 struct EmulCaos _##name##_caos; \ 977 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 978 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 979 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 980 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 981 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 982 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 983 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 984 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 985 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 986 _##name##_caos.reg_##r10 = (ULONG) (v10); \ 987 _##name##_caos.reg_a6 = (ULONG) (bn); \ 988 _##name##_caos.caos_Un.Offset = -(offs); \ 989 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 990 }) 991 992 #define LP10NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, t10, v10, r10, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 993 ({ \ 994 struct EmulCaos _##name##_caos; \ 995 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 996 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 997 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 998 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 999 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 1000 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 1001 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 1002 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 1003 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 1004 _##name##_caos.reg_##r10 = (ULONG) (v10); \ 1005 _##name##_caos.reg_a6 = (ULONG) (bn); \ 1006 _##name##_caos.caos_Un.Offset = -(offs); \ 1007 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 1008 }) 1009 1010 #define LP11(offs, rt, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, t10, v10, r10, t11, v11, r11, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 1011 ({ \ 1012 struct EmulCaos _##name##_caos; \ 1013 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 1014 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 1015 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 1016 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 1017 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 1018 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 1019 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 1020 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 1021 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 1022 _##name##_caos.reg_##r10 = (ULONG) (v10); \ 1023 _##name##_caos.reg_##r11 = (ULONG) (v11); \ 1024 _##name##_caos.reg_a6 = (ULONG) (bn); \ 1025 _##name##_caos.caos_Un.Offset = -(offs); \ 1026 (rt) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 1027 }) 1028 1029 #define LP11NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, t10, v10, r10, t11, v11, r11, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 1030 ({ \ 1031 struct EmulCaos _##name##_caos; \ 1032 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 1033 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 1034 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 1035 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 1036 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 1037 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 1038 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 1039 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 1040 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 1041 _##name##_caos.reg_##r10 = (ULONG) (v10); \ 1042 _##name##_caos.reg_##r11 = (ULONG) (v11); \ 1043 _##name##_caos.reg_a6 = (ULONG) (bn); \ 1044 _##name##_caos.caos_Un.Offset = -(offs); \ 1045 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 1046 }) 1047 1048 #define LP12NR(offs, name, t1, v1, r1, t2, v2, r2, t3, v3, r3, t4, v4, r4, t5, v5, r5, t6, v6, r6, t7, v7, r7, t8, v8, r8, t9, v9, r9, t10, v10, r10, t11, v11, r11, t12, v12, r12, bt, bn, cm1, cs1, cl1, cm2, cs2, cl2 ) \ 1049 ({ \ 1050 struct EmulCaos _##name##_caos; \ 1051 _##name##_caos.reg_##r1 = (ULONG) (v1); \ 1052 _##name##_caos.reg_##r2 = (ULONG) (v2); \ 1053 _##name##_caos.reg_##r3 = (ULONG) (v3); \ 1054 _##name##_caos.reg_##r4 = (ULONG) (v4); \ 1055 _##name##_caos.reg_##r5 = (ULONG) (v5); \ 1056 _##name##_caos.reg_##r6 = (ULONG) (v6); \ 1057 _##name##_caos.reg_##r7 = (ULONG) (v7); \ 1058 _##name##_caos.reg_##r8 = (ULONG) (v8); \ 1059 _##name##_caos.reg_##r9 = (ULONG) (v9); \ 1060 _##name##_caos.reg_##r10 = (ULONG) (v10); \ 1061 _##name##_caos.reg_##r11 = (ULONG) (v11); \ 1062 _##name##_caos.reg_##r12 = (ULONG) (v12); \ 1063 _##name##_caos.reg_a6 = (ULONG) (bn); \ 1064 _##name##_caos.caos_Un.Offset = -(offs); \ 1065 (void) (*MyEmulHandle->EmulCallOS)(&_##name##_caos); \ 1066 }) 1067 1068 #endif /* __MORPHOS_NODIRECTCALL */ 1069 #endif /* __INLINE_MACROS_H */