From 3c9b82baee30a1d3cfeb419643c6363dc9267208 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Tue, 25 Oct 2005 17:40:19 +0000 Subject: Add support for the Z80 processor family --- ld/emultempl/z80.em | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 ld/emultempl/z80.em (limited to 'ld/emultempl') diff --git a/ld/emultempl/z80.em b/ld/emultempl/z80.em new file mode 100644 index 0000000..d36c943 --- /dev/null +++ b/ld/emultempl/z80.em @@ -0,0 +1,85 @@ +# This shell script emits C code -*- C -*- +# to keep track of the machine type of Z80 object files +# It does some substitutions. + +LDEMUL_BEFORE_PARSE=gldz80_before_parse +LDEMUL_RECOGNIZED_FILE=gldz80_recognized_file +LDEMUL_AFTER_OPEN=gldz80_after_open + +cat >>e${EMULATION_NAME}.c <the_bfd); + switch (mach_type) + { + case bfd_mach_z80strict: + result_mach_type |= M_Z80STRICT; + break; + case bfd_mach_z80: + result_mach_type |= M_Z80; + break; + case bfd_mach_z80full: + result_mach_type |= M_Z80FULL; + break; + case bfd_mach_r800: + result_mach_type |= M_R800; + break; + default: + result_mach_type |= M_Z80ANY; + } + return FALSE; +} + +/* Set the machine type of the output file based on result_mach_type. */ +static void +gldz80_after_open (void) +{ + unsigned long mach_type; + + switch (result_mach_type) + { + case M_Z80STRICT: + mach_type = bfd_mach_z80strict; + break; + case M_Z80: + mach_type = bfd_mach_z80; + break; + case M_Z80FULL: + mach_type = bfd_mach_z80full; + break; + case M_R800: + mach_type = bfd_mach_r800; + break; + default: + mach_type = 0; + } + bfd_set_arch_mach (output_bfd, bfd_arch_z80, mach_type); +} +/* --- \end{z80.em} */ +EOF -- cgit v1.1