mirror of
https://github.com/ctm/syn68k.git
synced 2024-12-03 14:49:38 +00:00
57 lines
1.1 KiB
C
57 lines
1.1 KiB
C
#ifndef _TEMPLATE_H_INCLUDED_
|
|
#define _TEMPLATE_H_INCLUDED_
|
|
|
|
#include "syn68k_private.h"
|
|
|
|
#define FAILURE 1
|
|
#define SUCCESS 0
|
|
|
|
typedef enum
|
|
{
|
|
REGISTER, CONSTANT
|
|
} i386_op_type_t;
|
|
|
|
typedef enum
|
|
{
|
|
IN, OUT, INOUT
|
|
} io_t;
|
|
|
|
/* BROKEN_SIZE_32 is a variant of SIZE_32 that is only used with addresses
|
|
that cause trouble on Mac OS X's ld. The problem ld doesn't recognize
|
|
0x80000000 (-2147483648) as a legitimate 32-bit relative offset. See
|
|
the extended comment in process.c for more info */
|
|
|
|
typedef enum { SIZE_8, SIZE_16, SIZE_32 } byte_size_t;
|
|
|
|
typedef struct
|
|
{
|
|
byte_size_t size;
|
|
i386_op_type_t type;
|
|
io_t inout;
|
|
} operand_t;
|
|
|
|
#define MAX_OPERANDS 6
|
|
|
|
typedef BOOL boolean_t;
|
|
|
|
typedef uint8 cc_mask_t;
|
|
|
|
typedef struct
|
|
{
|
|
const char *macro_name;
|
|
const char *i386_cc_in, *i386_cc_out;
|
|
const char *i386_in, *i386_out; /* All non-cc inputs and outputs. */
|
|
const char *pipe;
|
|
const char *code;
|
|
const char *operand_name[MAX_OPERANDS];
|
|
operand_t operand[MAX_OPERANDS];
|
|
} template_t;
|
|
|
|
extern const template_t template[];
|
|
|
|
#ifndef MIN
|
|
#define MIN(a, b) ((a) < (b) ? (a) : (b))
|
|
#endif
|
|
|
|
#endif /* !_TEMPLATE_H_INCLUDED_ */
|