Jeff Law [Sat, 31 Aug 1996 22:00:45 +0000 (22:00 +0000)]
* v850-dis.c (disassemble): Handle insertion of ',', '[' and
']' characters into the output stream.
* v850-opc.c (v850_opcodes: Remove size field from all opcodes.
Add "memop" field to all opcodes (for the disassembler).
Reorder opcodes so that "nop" comes before "mov" and "jr"
comes before "jarl".
Should give us a functional disassembler.
Jeff Law [Sat, 31 Aug 1996 21:21:27 +0000 (21:21 +0000)]
* v850-dis.c (print_insn_v850): Properly handle disassembling
a two byte insn at the end of a memory region when the memory
region's size is only two byte aligned.
Jeff Law [Sat, 31 Aug 1996 20:56:05 +0000 (20:56 +0000)]
* v850-dis.c (v850_reg_names): Define.
(v850_sreg_names, v850_cc_names): Likewise.
(disassemble): Very rough cut at printing operands (unformatted).
One step at a time.
* v850-opc.c (BOP_MASK): Fix.
(v850_opcodes): Fix mask for jarl and jr.
Bugs exposed by disassembler testing.
Jeff Law [Sat, 31 Aug 1996 19:22:11 +0000 (19:22 +0000)]
* v850-dis.c: New file. Skeleton for disassembler support.
* Makefile.in Remove v850 references, they're not needed here
and they weren't being sanitized away.
* configure.in: Add v850-dis.o when building v850 toolchains.
* configure: Rebuilt.
* disassemble.c (disassembler): Call v850 disassembler.
Jeff Law [Sat, 31 Aug 1996 19:20:28 +0000 (19:20 +0000)]
* v850-dis.c: New file. Skeleton for disassembler support.
* Makefile.in Remove v850 references, they're not needed here
and they weren't being sanitized away.
* configure.in: Add v850-dis.o when building v850 toolchains.
* configure: Rebuilt.
* disassemble.c (disassembler): Call v850 disassembler.
Skeleton support for V850 disassembler.
Jeff Law [Sat, 31 Aug 1996 18:23:02 +0000 (18:23 +0000)]
* v850-opc.c (insert_d8_7, extract_d8_7): New functions.
(insert_d8_6, extract_d8_6): New functions.
(v850_operands): Rename D7S to D7; operand for D7 is unsigned.
Rename D8 to D8_7, use {insert,extract}_d8_7 routines.
Add D8_6.
(IF4A, IF4B): Use "D7" instead of "D7S".
(IF4C, IF4D): Use "D8_7" instead of "D8".
(IF4E, IF4F): New. Use "D8_6".
(v850_opcodes): Use IF4A/IF4B for sld.b/sst.b. Use IF4C/IF4D for
sld.h/sst.h. Use IF4E/IF4F for sld.w/sst.w.
So we can assemble sst/sld instructions correctly.
Jeff Law [Sat, 31 Aug 1996 17:43:28 +0000 (17:43 +0000)]
* v850-opc.c (insert_d16_15, extract_d16_15): New functions.
(v850_operands): Change D16 to D16_15, use special insert/extract
routines. New new D16 that uses the generic insert/extract code.
(IF7A, IF7B): Use D16_15.
(IF7C, IF7D): New. Use D16.
(v850_opcodes): Use IF7C and IF7D for ld.b and st.b.
Jeff Law [Sat, 31 Aug 1996 16:24:18 +0000 (16:24 +0000)]
* elf32-v850.c (enum reloc_type): Add R_V850_{32,16,8}.
(elf_v850_howto_table): Add support for R_V850_{32,16,8}.
(v850_reloc_map): Add translation from BFD_RELOC_{32,16,8}
to R_V850_{32,16,8}.
So we don't get "reloc XXX not supported" messages anymore.
Jeff Law [Sat, 31 Aug 1996 05:52:38 +0000 (05:52 +0000)]
* config/tc-v850.c (md_apply_fix3): Use little endian get/put
routines to fetch/store the updated instruction from/to memory.
(v850_insert_operand): If the operand has a specialized insert
routine, call it.
Getting fixups closer. At least br <target> works now.
J.T. Conklin [Sat, 31 Aug 1996 01:42:46 +0000 (01:42 +0000)]
* config/tc-v850.c (reg_name_search): Align calling convention to
be like identical function found in tc-ppc.c.
(get_reloc): Removed.
(v850_reloc_prefix): New function, parse lo(), hi() and hi0().
(md_assemble): emit fixups.
(md_pcrel_from): renamed from md_pcrel_from_section, emit proper
displacement.
(md_apply_fix3): handle fixups/relocs.
* config/tc-v850.h (MD_PCREL_FROM_SECTION): Removed definition.
Ian Lance Taylor [Fri, 30 Aug 1996 22:36:45 +0000 (22:36 +0000)]
* configure.tgt (sh-*-elf*): New target.
* emulparams/shelf.sh: New file.
* emulparams/shlelf.sh: New file.
* Makefile.in (ALL_EMULATIONS): Add eshelf.o and eshlelf.o.
(eshelf.c, eshlelf.c): New targets.
* scripttempl/elf.sc: If EMBEDDED is defined, then don't add
SIZEOF_HEADERS to TEXT_START_ADDR. Expand CTOR_START and CTOR_END
around .ctors, and DTOR_START and DTOR_END around .dtors. Expand
OTHER_RELOCATING_SECTIONS if RELOCATING.
Ian Lance Taylor [Fri, 30 Aug 1996 22:29:42 +0000 (22:29 +0000)]
Add SH ELF support.
* configure.in (sh-*-elf*): New target.
* config/tc-sh.h (TARGET_ARCH): Define.
(WORKING_DOT_WORD): Define.
(TC_COFF_FIX2RTYPE): Only define if OBJ_COFF.
(BFD_ARCH, COFF_MAGIC, TC_COUNT_RELOC): Likewise.
(TC_RELOC_MANGLE, tc_coff_symbol_emit_hook): Likewise.
(DO_NOT_STRIP, NEED_FX_R_TYPE, TC_KEEP_FX_OFFSET): Likewise.
(TC_COFF_SIZEMACHDEP, tc_frob_file): Likewise.
(SUB_SEGMENT_ALIGN): Likewise.
(RELOC_32): Don't define.
(tc_frob_file_before_adjust): Define if BFD_ASSEMBLER.
(target_big_endian): Declare if OBJ_ELF.
(TARGET_FORMAT): Define if OBJ_ELF.
* config/tc-sh.c: Use BFD reloc codes instead of SH COFF reloc
numbers throughout.
(tc_crawl_symbol_chain): Only define if OBJ_COFF.
(tc_headers_hook, tc_coff_sizemachdep): Likewise.
(struct sh_count_relocs): Define.
(sh_count_relocs): New static function, broken out of
sh_frob_file. Add BFD_ASSEMBLER code.
(sh_frob_section): Likewise.
(sh_frob_file): Call sh_frob_section.
(md_convert_frag): If BFD_ASSEMBLER, change type of headers, and
call section_symbol rather than seg_info (seg)->dot.
(md_section_align): Add OBJ_ELF version.
(SWITCH_TABLE_CONS): Define.
(SWITCH_TABLE): Use SWITCH_TABLE_CONS.
(md_apply_fix): Change parameter types if BFD_ASSEMBLER. Only
handle fx_r_type == 0 if not BFD_ASSEMBLER. Return 0 if
BFD_ASSEMBLER.
(struct reloc_map): Define if not BFD_ASSEMBLER.
(coff_reloc_map): Likewise.
(sh_coff_reloc_mangle): Use coff_reloc_map to convert fx_r_type.
(tc_gen_reloc): New function if BFD_ASSEMBLER.
* write.c (write_relocs): Ifdef out fx_where test which triggers
inappropriately for SH ELF.
(write_object_file): Call tc_frob_file_before_adjust and
obj_frob_file_before_adjust if they are defined.
* write.c (write_object_file): Use BFD_RELOC_16, not
BFD_RELOC_NONE, when calling fix_new_exp for a broken word.
Jeff Law [Fri, 30 Aug 1996 16:35:10 +0000 (16:35 +0000)]
* interp.c (hash): Fix.
* interp.c (do_format_8): Get operands correctly and
call the target function.
* simops.c: Rough cut at "clr1", "not1", "set1", and "tst1".
Jeff Law [Fri, 30 Aug 1996 05:49:07 +0000 (05:49 +0000)]
* interp.c (do_format_4): Get operands correctly and
call the target function.
* simops.c: Rough cut at "sld.b", "sld.h", "sld.w", "sst.b",
"sst.h", and "sst.w".
Jeff Law [Fri, 30 Aug 1996 04:27:48 +0000 (04:27 +0000)]
* interp.c (do_format_5): Get operands correctly and
call the target function.
(sim_resume): Don't do a PC update for format 5 instructions.
* simops.c: Handle "jarl" and "jmp" instructions.
Jeff Law [Thu, 29 Aug 1996 23:39:23 +0000 (23:39 +0000)]
* interp.c (hash): Update to be more accurate.
(lookup_hash): Call hash rather than computing the hash
code here.
(do_format_1_2): Handle format 1 and format 2 instructions.
Get operands correctly and call the target function.
(do_format_6): Get operands correctly and call the target
function.
(do_formats_9_10): Rough cut so shift ops will work.
(sim_resume): Tweak to deal with format 1 and format 2
handling in a single funtion. Don't update the PC
for format 3 insns. Fix typos.
* simops.c: Slightly reorganize. Add condition code handling
to "add", "addi", "and", "andi", "or", "ori", "xor", "xori"
and "not" instructions.
* v850_sim.h (reg_t): Registers are 32bits.
(_state): The V850 has 32 general registers. Add a 32bit
psw and pc register too. Add accessor macros
Fixing lots of stuff. Starting to add condition code support. Basically
check pointing the work to date.
Martin Hunt [Thu, 29 Aug 1996 02:22:25 +0000 (02:22 +0000)]
Wed Aug 28 19:20:04 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* config/tc-d10v.c (find_opcode): Fix a bug which could generate
the wrong opcode for cases like st2w where there are many forms
of the same instruction.
Ian Lance Taylor [Tue, 27 Aug 1996 17:56:47 +0000 (17:56 +0000)]
* expr.c (operand): If md_parse_name is defined, call it before
calling symbol_find_or_make.
* config/tc-ppc.h (md_parse_name): Define.
(ppc_parse_name): Declare.
* config/tc-ppc.c (reg_name_search): Add regs and regcount
parameters.
(register_name): Update call to reg_name_search.
(cr_operand): New static variable.
(cr_names): New static const array.
(ppc_parse_name): New function.
(md_assemble): If PPC_OPERAND_CR is set in the operand flags, set
cr_operand before calling expression.
PR 10460.
Geoffrey Noer [Tue, 27 Aug 1996 11:32:34 +0000 (11:32 +0000)]
Tue Aug 27 04:25:08 1996 Geoffrey Noer <noer@cygnus.com>
* configure.in: work around host_alias configure bug.
AC_CANONICAL_HOST is called twice (first by AC_CHECK_TOOL
and second by AC_CANONICAL_SYSTEM). The second clobbers the
previous setting. Circumventing by moving the second check
to before the first.
* configure: regenerated
Ian Lance Taylor [Tue, 27 Aug 1996 04:14:13 +0000 (04:14 +0000)]
* elf32-mips.c (mips_elf_check_relocs): Set dynobj if needed for
R_MIPS_32 and R_MIPS_REL32. Set sgot and g as soon as possible.
(mips_elf_size_dynamic_sections): Don't require .got to exist.
(mips_elf_finish_dynamic_sections): Likewise.
Martin Hunt [Tue, 27 Aug 1996 01:28:10 +0000 (01:28 +0000)]
Mon Aug 26 18:24:51 1996 Martin M. Hunt <hunt@pizza.cygnus.com>
* config/tc-d10v.c: Fixed ".word". Fixed problem with range checking
on addresses. Improved error messages.
* doc/c-d10v.texi: Added docs for register pairs.
Ian Lance Taylor [Mon, 26 Aug 1996 19:07:06 +0000 (19:07 +0000)]
* ecoff.c (init_file): Initialize fMerge to 1.
(add_file): Restore old file merging code, but only merge files if
fMerge is set.
(ecoff_directive_loc): Clear fMerge field of current file.
(ecoff_generate_asm_lineno): Likewise.
Jeff Law [Fri, 23 Aug 1996 20:58:13 +0000 (20:58 +0000)]
* config/tc-v850.c (md_assemble): Rough cut at demanding
"ep" or "r30" in sst and sld instructions.
(md_apply_fix3): Don't abort. Just warn that we don't
have relocs yet.
Jeff Law [Fri, 23 Aug 1996 19:35:05 +0000 (19:35 +0000)]
* gas/v850/basic.exp (mem_tests): Test instruction bit patterns.
xfail sst and sld tests.
(mov_tests): Remove bogus xfail.
* gas/v850/mem.s: sst and sld instructions can only index from
"ep" register.