mirror of
https://github.com/Interlisp/maiko.git
synced 2026-01-13 23:27:12 +00:00
156 lines
3.5 KiB
C
Executable File
156 lines
3.5 KiB
C
Executable File
/* $Id: inln68k.h,v 1.2 1999/01/03 02:06:03 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
|
|
|
|
|
|
/************************************************************************/
|
|
/* */
|
|
/* Copyright 1989, 1990 Venue, Fuji Xerox Co., Ltd, Xerox Corp. */
|
|
/* */
|
|
/* This file is work-product resulting from the Xerox/Venue */
|
|
/* Agreement dated 18-August-1989 for support of Medley. */
|
|
/* */
|
|
/************************************************************************/
|
|
|
|
|
|
/* inlinedefs68K.h */
|
|
/* Bob Krivacic 2/23/88 */
|
|
|
|
/* These are the Macros used to generate inline 68K assembly code
|
|
to implement the opcodes. Used by both dispatch
|
|
loop and native code.
|
|
*/
|
|
|
|
#undef DIFFERENCE
|
|
#undef PLUS2
|
|
#undef GREATERP
|
|
#undef IDIFFERENCE
|
|
#undef IPLUS2
|
|
#undef IGREATERP
|
|
#undef LOGOR
|
|
#undef LOGAND
|
|
#undef LOGXOR
|
|
#undef LRSH8
|
|
#undef LRSH1
|
|
#undef LLSH8
|
|
#undef LLSH1
|
|
#undef N_OP_ADDBASE
|
|
#undef N_OP_LOLOC
|
|
#undef N_OP_HILOC
|
|
#undef N_OP_VAG2
|
|
#undef LISTP
|
|
#undef NTYPEX
|
|
#undef TYPEP
|
|
|
|
#define DIFFERENCE { \
|
|
TOPOFSTACK = op_difference(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
diff_err: \
|
|
asm("diff_err:"); \
|
|
N_OP_POPPED_CALL_2(N_OP_difference, GET_POPPED); \
|
|
}
|
|
|
|
#define PLUS2 { \
|
|
TOPOFSTACK = op_plus(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
plus_err: \
|
|
asm("plus_err:"); \
|
|
N_OP_POPPED_CALL_2(N_OP_plus2, GET_POPPED); \
|
|
}
|
|
|
|
#define GREATERP { \
|
|
TOPOFSTACK = op_greaterp(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
greaterp_err: \
|
|
asm("greaterp_err:"); \
|
|
N_OP_POPPED_CALL_2(N_OP_greaterp, GET_POPPED); \
|
|
}
|
|
|
|
#define IDIFFERENCE { \
|
|
TOPOFSTACK = op_difference(POP_TOS_1, TOPOFSTACK); \
|
|
}
|
|
|
|
#define IPLUS2 { \
|
|
TOPOFSTACK = op_plus(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
}
|
|
|
|
#define IGREATERP { \
|
|
TOPOFSTACK = op_greaterp(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
}
|
|
|
|
|
|
#define LOGOR { \
|
|
TOPOFSTACK = op_logor(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
logor_err: \
|
|
asm("logor_err:"); \
|
|
N_OP_POPPED_CALL_2(N_OP_logor, GET_POPPED); \
|
|
}
|
|
|
|
#define LOGAND { \
|
|
TOPOFSTACK = op_logand(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
logand_err: \
|
|
asm("logand_err:"); \
|
|
N_OP_POPPED_CALL_2(N_OP_logand, GET_POPPED); \
|
|
}
|
|
|
|
#define LOGXOR { \
|
|
TOPOFSTACK = op_logxor(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
logxor_err: \
|
|
asm("logxor_err:"); \
|
|
N_OP_POPPED_CALL_2(N_OP_logxor, GET_POPPED); \
|
|
}
|
|
|
|
|
|
#define LRSH8 { \
|
|
TOPOFSTACK = op_lrsh8(TOPOFSTACK); \
|
|
nextop1; \
|
|
lrsh8_err: \
|
|
asm("lrsh8_err:"); \
|
|
N_OP_CALL_1(N_OP_lrsh8); \
|
|
}
|
|
|
|
#define LRSH1 { \
|
|
TOPOFSTACK = op_lrsh1(TOPOFSTACK); \
|
|
nextop1; \
|
|
lrsh1_err: \
|
|
asm("lrsh1_err:"); \
|
|
N_OP_CALL_1(N_OP_lrsh1); \
|
|
}
|
|
|
|
#define LLSH8 { \
|
|
TOPOFSTACK = op_llsh8(TOPOFSTACK); \
|
|
nextop1; \
|
|
llsh8_err: \
|
|
asm("llsh8_err:"); \
|
|
N_OP_CALL_1(N_OP_llsh8); \
|
|
}
|
|
|
|
#define LLSH1 { \
|
|
TOPOFSTACK = op_llsh1(TOPOFSTACK); \
|
|
nextop1; \
|
|
llsh1_err: \
|
|
asm("llsh1_err:"); \
|
|
N_OP_CALL_1(N_OP_llsh1); \
|
|
}
|
|
|
|
#define N_OP_ADDBASE { \
|
|
TOPOFSTACK = addbase(POP_TOS_1, TOPOFSTACK); \
|
|
nextop1; \
|
|
}
|
|
|
|
|
|
#define N_OP_LOLOC { TOPOFSTACK = loloc(TOPOFSTACK); nextop1; }
|
|
#define N_OP_HILOC { TOPOFSTACK = hiloc(TOPOFSTACK); nextop1; }
|
|
#define N_OP_VAG2 { TOPOFSTACK = vag2(POP_TOS_1, TOPOFSTACK); nextop1; }
|
|
|
|
#define LISTP { TOPOFSTACK = listp(TOPOFSTACK); nextop1;}
|
|
#define NTYPEX { TOPOFSTACK = ntypex(TOPOFSTACK); nextop1; }
|
|
#define TYPEP(n) { TOPOFSTACK = typep(TOPOFSTACK, Get_BYTE(PCMAC+1)); nextop2; }
|
|
|
|
|
|
|
|
|