extern int hi_bit_nr;
extern int insn_bit_size;
enum {
generate_with_direct_access = 0x1,
generate_with_icache = 0x2,
generate_with_semantic_icache = 0x4,
generate_with_insn_in_icache = 0x8,
};
typedef enum {
generate_calls = 0x100,
generate_calls_with_direct_access
= generate_calls | generate_with_direct_access,
generate_calls_with_icache
= generate_calls | generate_with_icache,
generate_calls_with_semantic_icache
= generate_calls_with_icache | generate_with_semantic_icache,
generate_calls_with_direct_access_icache
= generate_calls_with_icache | generate_with_direct_access,
generate_calls_with_direct_access_semantic_icache
= generate_calls_with_direct_access_icache | generate_with_semantic_icache,
generate_jumps = 0x200,
generate_jumps_with_direct_access
= generate_jumps | generate_with_direct_access,
generate_jumps_with_icache
= generate_jumps | generate_with_icache,
generate_jumps_with_semantic_icache
= generate_jumps_with_icache | generate_with_semantic_icache,
generate_jumps_with_direct_access_icache
= generate_jumps_with_icache | generate_with_direct_access,
generate_jumps_with_direct_access_semantic_icache
= generate_jumps_with_direct_access_icache | generate_with_semantic_icache,
} igen_code;
extern igen_code code;
extern int icache_size;
extern int generate_expanded_instructions;
extern int generate_smp;
#define ICACHE_FUNCTION_FORMAL \
"cpu *processor,\n\
instruction_word instruction,\n\
unsigned_word cia,\n\
idecode_cache *cache_entry"
#define ICACHE_FUNCTION_ACTUAL "processor, instruction, cia, cache_entry"
#define ICACHE_FUNCTION_TYPE \
((code & generate_with_semantic_icache) \
? SEMANTIC_FUNCTION_TYPE \
: "idecode_semantic *")
#define SEMANTIC_FUNCTION_FORMAL \
((code & generate_with_icache) \
? "cpu *processor,\n idecode_cache *cache_entry,\n unsigned_word cia" \
: "cpu *processor,\n instruction_word instruction,\n unsigned_word cia")
#define SEMANTIC_FUNCTION_ACTUAL \
((code & generate_with_icache) \
? "processor, instruction, cia, cache_entry" \
: "processor, instruction, cia")
#define SEMANTIC_FUNCTION_TYPE "unsigned_word"
extern void print_my_defines
(lf *file,
insn_bits *expanded_bits,
table_entry *file_entry);
extern void print_itrace
(lf *file,
table_entry *file_entry,
int idecode);
typedef enum {
function_name_prefix_semantics,
function_name_prefix_idecode,
function_name_prefix_itable,
function_name_prefix_icache,
function_name_prefix_none
} lf_function_name_prefixes;
extern int print_function_name
(lf *file,
const char *basename,
insn_bits *expanded_bits,
lf_function_name_prefixes prefix);