aboutsummaryrefslogtreecommitdiff
path: root/gas/config/rx-defs.h
diff options
context:
space:
mode:
authorYoshinori Sato <ysato@users.sourceforge.jp>2018-12-25 20:52:53 +0900
committerYoshinori Sato <ysato@users.sourceforge.jp>2019-01-05 22:51:41 +0900
commit6a25bee8d049d3b51cea9e10f487fc04c792dd66 (patch)
tree742fe49961d63c6cd241d94e3a7a970e5b75eac2 /gas/config/rx-defs.h
parent59581069b4d070ab0ac61047177ee119110d678e (diff)
downloadgdb-6a25bee8d049d3b51cea9e10f487fc04c792dd66.zip
gdb-6a25bee8d049d3b51cea9e10f487fc04c792dd66.tar.gz
gdb-6a25bee8d049d3b51cea9e10f487fc04c792dd66.tar.bz2
RX: gas - Add RXv3 instruction support.
Instruction manual. https://www.renesas.com/us/en/doc/products/mpumcu/doc/rx_family/r01us0316ej0100-rxv3sm.pdf * config/rx-defs.h (rx_cpu_types): Add type RXV3 and RXV3FPU. (rx_bfield): Add prototype. (rx_post): Likewise. * config/rx-parse.y: Add v3 instructions and Double FPU registers. (DSIZE): Define. (POST): Define. (rx_check_v3): New. check v3 type. (rx_check_dfpu): New. check have double support. (double_condition_table): New. dcmp<cond> contiditon. (check_condition): Multiple condition support. (rx_lex): RXv3 instructions support. Add parse dcmp<cond> instruction and Double FPU registers. (immediate): Disable optimize in dmov #imm case. (displacement): Add double displacement in dmov instraction. * config/tc-rx.c (rx_use_conventional_section_names): Invert default value in rx-*-linux target. (cpu_type): Add additional ELF flags. (cpu_type_list): Add RXv3. (md_parse_option): Refer elf_flags from cpu_type_list. (md_show_usage): Add rxv3 and rxv3-dfpu. (rx_bytesT): Add post byte. (rx_bfield): New. generate bfmov / bfmovz "imm" field. (rx_post): New. Set instruction post byte. (md_assemble): Add post byte. doc/c-rx.texi: Add cpu types. * testsuite/gas/rx/Xtod.d: New. * testsuite/gas/rx/Xtod.sm: New. * testsuite/gas/rx/bfmov.d: New. * testsuite/gas/rx/bfmov.sm: New. * testsuite/gas/rx/dabs.d: New. * testsuite/gas/rx/dabs.sm: New. * testsuite/gas/rx/dadd.d: New. * testsuite/gas/rx/dadd.sm: New. * testsuite/gas/rx/dcmp.d: New. * testsuite/gas/rx/dcmp.sm: New. * testsuite/gas/rx/ddiv.d: New. * testsuite/gas/rx/ddiv.sm: New. * testsuite/gas/rx/dmov.d: New. * testsuite/gas/rx/dmov.sm: New. * testsuite/gas/rx/dmul.d: New. * testsuite/gas/rx/dmul.sm: New. * testsuite/gas/rx/dneg.d: New. * testsuite/gas/rx/dneg.sm: New. * testsuite/gas/rx/dpopm.d: New. * testsuite/gas/rx/dpopm.sm: New. * testsuite/gas/rx/dpushm.d: New. * testsuite/gas/rx/dpushm.sm: New. * testsuite/gas/rx/dround.d: New. * testsuite/gas/rx/dround.sm: New. * testsuite/gas/rx/dsqrt.d: New. * testsuite/gas/rx/dsqrt.sm: New. * testsuite/gas/rx/dsub.d: New. * testsuite/gas/rx/dsub.sm: New. * testsuite/gas/rx/dtoX.d: New. * testsuite/gas/rx/dtoX.sm: New. * testsuite/gas/rx/macros.inc: Add double FPU registers. * testsuite/gas/rx/mvfdc.d: New. * testsuite/gas/rx/mvfdc.sm: New. * testsuite/gas/rx/mvfdr.d: New. * testsuite/gas/rx/mvfdr.sm: New. * testsuite/gas/rx/mvtdc.d: New. * testsuite/gas/rx/mvtdc.sm: New. * testsuite/gas/rx/rstr.d: New. * testsuite/gas/rx/rstr.sm: New. * testsuite/gas/rx/rx.exp: Use rxv3-dfpu option. * testsuite/gas/rx/save.d: New. * testsuite/gas/rx/save.sm: New. * testsuite/gas/rx/xor.d: New. * testsuite/gas/rx/xor.sm: Add pattern.
Diffstat (limited to 'gas/config/rx-defs.h')
-rw-r--r--gas/config/rx-defs.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/gas/config/rx-defs.h b/gas/config/rx-defs.h
index 508e6cf..9d114f5 100644
--- a/gas/config/rx-defs.h
+++ b/gas/config/rx-defs.h
@@ -39,7 +39,9 @@ enum rx_cpu_types
RX610,
RX200,
RX100,
- RXV2
+ RXV2,
+ RXV3,
+ RXV3FPU,
};
extern int rx_pid_register;
@@ -57,6 +59,7 @@ extern void rx_op (expressionS, int, int);
extern void rx_disp3 (expressionS, int);
extern void rx_field5s (expressionS);
extern void rx_field5s2 (expressionS);
+extern void rx_bfield (expressionS, expressionS, expressionS);
extern void rx_relax (int, int);
extern void rx_linkrelax_dsp (int);
extern void rx_linkrelax_imm (int);
@@ -64,6 +67,7 @@ extern void rx_linkrelax_branch (void);
extern int rx_parse (void);
extern int rx_wrap (void);
extern void rx_note_string_insn_use (void);
+extern void rx_post (char);
extern char * rx_lex_start;
extern char * rx_lex_end;