diff options
author | Nick Clifton <nickc@redhat.com> | 1997-09-16 01:34:03 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 1997-09-16 01:34:03 +0000 |
commit | d30a2be45d6518c9de3aba98b75b5552880cb524 (patch) | |
tree | 129f4fc2cd9f03b7ffd0775d0fe09b1622c77d6c /gas | |
parent | 9bbbb61220b9cc3818a6f7e6c7c92be31bc867e2 (diff) | |
download | gdb-d30a2be45d6518c9de3aba98b75b5552880cb524.zip gdb-d30a2be45d6518c9de3aba98b75b5552880cb524.tar.gz gdb-d30a2be45d6518c9de3aba98b75b5552880cb524.tar.bz2 |
Added checking of instructions against target cpu.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 15 | ||||
-rw-r--r-- | gas/config/tc-v850.c | 28 | ||||
-rw-r--r-- | gas/config/tc-v850.h | 14 |
3 files changed, 55 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 474654b..c1783b3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,18 @@ +Mon Sep 15 18:33:06 1997 Nick Clifton <nickc@cygnus.com> + + * config/tc-v850.c (processor_mask): New variable. + (set_machine, md_parse_option): Set processor_mask. + (md_assemble): Check that instruction is available to target + processor. + + * config/tc-v850.h (TARGET_PROCESSOR): New constant. +start-sanitize-v850e + (TARGET_PROCESSOR): New constant. +end-sanitize-v850e +start-sanitize-v850eq + (TARGET_PROCESSOR): New constant. +end-sanitize-v850eq + start-sanitize-tx19 Mon Sep 15 17:26:46 1997 Gavin Koch <gavin@cygnus.com> diff --git a/gas/config/tc-v850.c b/gas/config/tc-v850.c index 727c2ef..39f1c72 100644 --- a/gas/config/tc-v850.c +++ b/gas/config/tc-v850.c @@ -34,9 +34,12 @@ static bfd_reloc_code_real_type hold_cons_reloc; static boolean warn_signed_overflows = FALSE; static boolean warn_unsigned_overflows = FALSE; -/* Indicates the target processor type. */ +/* Indicates the target BFD machine number. */ static int machine = TARGET_MACHINE; +/* Indicates the target processor(s) for the assemble. */ +static unsigned int processor_mask = TARGET_PROCESSOR; + /* Structure to hold information about predefined registers. */ struct reg_name @@ -211,6 +214,17 @@ set_machine (int number) { machine = number; bfd_set_arch_mach (stdoutput, TARGET_ARCH, machine); + + switch (machine) + { + case 0: processor_mask = PROCESSOR_V850; break; +/* start-sanitize-v850e */ + case bfd_mach_v850e: processor_mask = PROCESSOR_V850E; break; +/* end-sanitize-v850e */ +/* start-sanitize-v850eq */ + case bfd_mach_v850eq: processor_mask = PROCESSOR_V850EQ; break; +/* end-sanitize-v850eq */ + } } /* The target specific pseudo-ops which we support. */ @@ -821,6 +835,8 @@ md_parse_option (c, arg) else if (strcmp (arg, "v850e") == 0) { machine = bfd_mach_v850e; + processor_mask = PROCESSOR_V850 | PROCESSOR_V850E; + return 1; } /* end-sanitize-v850e */ @@ -828,6 +844,7 @@ md_parse_option (c, arg) else if (strcmp (arg, "v850eq") == 0) { machine = bfd_mach_v850eq; + processor_mask = PROCESSOR_V850EQ; return 1; } /* end-sanitize-v850eq */ @@ -1133,9 +1150,16 @@ md_assemble (str) { const char * errmsg = NULL; + match = 0; + + if ((opcode->processors & processor_mask) == 0) + { + errmsg = "Target processor doe snot support this instruction."; + goto error; + } + relaxable = 0; fc = 0; - match = 0; next_opindex = 0; insn = opcode->opcode; extra_data_after_insn = false; diff --git a/gas/config/tc-v850.h b/gas/config/tc-v850.h index 31baf0b..449777a 100644 --- a/gas/config/tc-v850.h +++ b/gas/config/tc-v850.h @@ -29,8 +29,10 @@ /* The target BFD architecture. */ #define TARGET_ARCH bfd_arch_v850 +/* The target BFD format. */ #define TARGET_FORMAT "elf32-v850" +/* The target BFD machine number. */ #define TARGET_MACHINE 0 /* start-sanitize-v850e */ #undef TARGET_MACHINE @@ -41,6 +43,18 @@ #define TARGET_MACHINE bfd_mach_v850eq /* end-sanitize-v850eq */ +/* The target processor mask. */ +#define TARGET_PROCESSOR PROCESSOR_V850 +/* start-sanitize-v850e */ +#undef TARGET_PROCESSOR +#define TARGET_PROCESSOR PROCESSOR_V850E +/* end-sanitize-v850e */ +/* start-sanitize-v850eq */ +#undef TARGET_PROCESSOR +#define TARGET_PROCESSOR PROCESSOR_V850EQ +/* end-sanitize-v850eq */ + + #define MD_APPLY_FIX3 #define md_operand(x) |