mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-17 16:05:56 +08:00
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
include/ * opcode/nios2.h (OPX_WRPRS): New define. (OP_MATCH_WRPRS): Likewise. opcodes/ * nios2-opc.c (nios2_builtin_opcodes): Add entry for wrprs. gas/ * config/tc-nios2.c (nios2_assemble_args_ds): New function. (nios2_arg_info_structs): Add "d,s" and "d,s,E" entries. gas/testsuite/ * gas/nios2/nios2.exp: Run wrprs. * gas/nios2/wrprs.d: New file. * gas/nios2/wrprs.s: Likewise.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* config/tc-nios2.c (nios2_assemble_args_ds): New function.
|
||||||
|
(nios2_arg_info_structs): Add "d,s" and "d,s,E" entries.
|
||||||
|
|
||||||
2013-03-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
2013-03-11 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||||
|
|
||||||
* config/tc-arm.c (crc_ext_armv8): New feature set.
|
* config/tc-arm.c (crc_ext_armv8): New feature set.
|
||||||
|
@ -1693,6 +1693,28 @@ nios2_assemble_args_cs (nios2_insn_infoS *insn_info)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
nios2_assemble_args_ds (nios2_insn_infoS * insn_info)
|
||||||
|
{
|
||||||
|
if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
|
||||||
|
{
|
||||||
|
struct nios2_reg *dst = nios2_reg_lookup (insn_info->insn_tokens[1]);
|
||||||
|
struct nios2_reg *src = nios2_reg_lookup (insn_info->insn_tokens[2]);
|
||||||
|
|
||||||
|
if (dst == NULL)
|
||||||
|
as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
|
||||||
|
else
|
||||||
|
SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
|
||||||
|
|
||||||
|
if (src == NULL)
|
||||||
|
as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
|
||||||
|
else
|
||||||
|
SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
|
||||||
|
|
||||||
|
nios2_check_assembly (insn_info->insn_code, insn_info->insn_tokens[3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
nios2_assemble_args_ldst (nios2_insn_infoS *insn_info)
|
nios2_assemble_args_ldst (nios2_insn_infoS *insn_info)
|
||||||
{
|
{
|
||||||
@ -1850,6 +1872,8 @@ const nios2_arg_infoS nios2_arg_info_structs[] = {
|
|||||||
{"d,c,E", nios2_assemble_args_dc},
|
{"d,c,E", nios2_assemble_args_dc},
|
||||||
{"c,s", nios2_assemble_args_cs},
|
{"c,s", nios2_assemble_args_cs},
|
||||||
{"c,s,E", nios2_assemble_args_cs},
|
{"c,s,E", nios2_assemble_args_cs},
|
||||||
|
{"d,s", nios2_assemble_args_ds},
|
||||||
|
{"d,s,E", nios2_assemble_args_ds},
|
||||||
{"l,d,s,t", nios2_assemble_args_ldst},
|
{"l,d,s,t", nios2_assemble_args_ldst},
|
||||||
{"l,d,s,t,E", nios2_assemble_args_ldst},
|
{"l,d,s,t,E", nios2_assemble_args_ldst},
|
||||||
{"d,s,j", nios2_assemble_args_dsj},
|
{"d,s,j", nios2_assemble_args_dsj},
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* gas/nios2/nios2.exp: Run wrprs.
|
||||||
|
* gas/nios2/wrprs.d: New file.
|
||||||
|
* gas/nios2/wrprs.s: Likewise.
|
||||||
|
|
||||||
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* gas/nios2/nios2.exp: Run rdprs.
|
* gas/nios2/nios2.exp: Run rdprs.
|
||||||
|
@ -54,6 +54,7 @@ if { [istarget nios2-*-*] } then {
|
|||||||
run_dump_test "rotate"
|
run_dump_test "rotate"
|
||||||
run_dump_test "registers"
|
run_dump_test "registers"
|
||||||
run_dump_test "rdprs"
|
run_dump_test "rdprs"
|
||||||
|
run_dump_test "wrprs"
|
||||||
|
|
||||||
run_dump_test "stw"
|
run_dump_test "stw"
|
||||||
run_dump_test "sth"
|
run_dump_test "sth"
|
||||||
|
19
gas/testsuite/gas/nios2/wrprs.d
Normal file
19
gas/testsuite/gas/nios2/wrprs.d
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#objdump: -dr --prefix-addresses --show-raw-insn
|
||||||
|
#name: NIOS2 wrprs
|
||||||
|
|
||||||
|
# Test the wrprs instruction
|
||||||
|
|
||||||
|
.*: +file format elf32-littlenios2
|
||||||
|
|
||||||
|
Disassembly of section .text:
|
||||||
|
0+0000 <[^>]*> 0000a03a wrprs zero,zero
|
||||||
|
0+0004 <[^>]*> 0002a03a wrprs at,zero
|
||||||
|
0+0008 <[^>]*> 0004a03a wrprs r2,zero
|
||||||
|
0+000c <[^>]*> 0008a03a wrprs r4,zero
|
||||||
|
0+0010 <[^>]*> 0010a03a wrprs r8,zero
|
||||||
|
0+0014 <[^>]*> 0020a03a wrprs r16,zero
|
||||||
|
0+0018 <[^>]*> 0800a03a wrprs zero,at
|
||||||
|
0+001c <[^>]*> 1000a03a wrprs zero,r2
|
||||||
|
0+0020 <[^>]*> 2000a03a wrprs zero,r4
|
||||||
|
0+0024 <[^>]*> 4000a03a wrprs zero,r8
|
||||||
|
0+0028 <[^>]*> 8000a03a wrprs zero,r16
|
16
gas/testsuite/gas/nios2/wrprs.s
Normal file
16
gas/testsuite/gas/nios2/wrprs.s
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# Source file used to test the wrprs instruction
|
||||||
|
|
||||||
|
.set noat
|
||||||
|
|
||||||
|
foo:
|
||||||
|
wrprs zero, zero
|
||||||
|
wrprs at, zero
|
||||||
|
wrprs r2, zero
|
||||||
|
wrprs r4, zero
|
||||||
|
wrprs r8, zero
|
||||||
|
wrprs r16, zero
|
||||||
|
wrprs zero, at
|
||||||
|
wrprs zero, r2
|
||||||
|
wrprs zero, r4
|
||||||
|
wrprs zero, r8
|
||||||
|
wrprs zero, r16
|
@ -1,3 +1,8 @@
|
|||||||
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* opcode/nios2.h (OPX_WRPRS): New define.
|
||||||
|
(OP_MATCH_WRPRS): Likewise.
|
||||||
|
|
||||||
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* opcode/nios2.h (OP_RDPRS): New define.
|
* opcode/nios2.h (OP_RDPRS): New define.
|
||||||
|
@ -344,6 +344,7 @@ struct nios2_reg
|
|||||||
#define OPX_SYNC 54
|
#define OPX_SYNC 54
|
||||||
#define OPX_TRAP 45
|
#define OPX_TRAP 45
|
||||||
#define OPX_WRCTL 46
|
#define OPX_WRCTL 46
|
||||||
|
#define OPX_WRPRS 20
|
||||||
#define OPX_XOR 30
|
#define OPX_XOR 30
|
||||||
|
|
||||||
/* The following macros define the opcode matches for each
|
/* The following macros define the opcode matches for each
|
||||||
@ -440,6 +441,7 @@ struct nios2_reg
|
|||||||
#define OP_MATCH_TRAP ((0x1d << 17) | OPX_MATCH (OPX_TRAP))
|
#define OP_MATCH_TRAP ((0x1d << 17) | OPX_MATCH (OPX_TRAP))
|
||||||
#define OP_MATCH_ERET (0xe8000000 | OPX_MATCH (OPX_ERET))
|
#define OP_MATCH_ERET (0xe8000000 | OPX_MATCH (OPX_ERET))
|
||||||
#define OP_MATCH_WRCTL OPX_MATCH (OPX_WRCTL)
|
#define OP_MATCH_WRCTL OPX_MATCH (OPX_WRCTL)
|
||||||
|
#define OP_MATCH_WRPRS OPX_MATCH (OPX_WRPRS)
|
||||||
#define OP_MATCH_XOR OPX_MATCH (OPX_XOR)
|
#define OP_MATCH_XOR OPX_MATCH (OPX_XOR)
|
||||||
#define OP_MATCH_FLUSHI OPX_MATCH (OPX_FLUSHI)
|
#define OP_MATCH_FLUSHI OPX_MATCH (OPX_FLUSHI)
|
||||||
#define OP_MATCH_FLUSHP OPX_MATCH (OPX_FLUSHP)
|
#define OP_MATCH_FLUSHP OPX_MATCH (OPX_FLUSHP)
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
|
* nios2-opc.c (nios2_builtin_opcodes): Add entry for wrprs.
|
||||||
|
|
||||||
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
2013-03-11 Sebastian Huber <sebastian.huber@embedded-brains.de>
|
||||||
|
|
||||||
* nios2-opc.c (nios2_builtin_opcodes): Add entry for rdprs.
|
* nios2-opc.c (nios2_builtin_opcodes): Add entry for rdprs.
|
||||||
|
@ -393,6 +393,8 @@ const struct nios2_opcode nios2_builtin_opcodes[] =
|
|||||||
OP_MATCH_CUSTOM, OP_MASK_ROP, 0, custom_opcode_overflow},
|
OP_MATCH_CUSTOM, OP_MASK_ROP, 0, custom_opcode_overflow},
|
||||||
{"wrctl", "c,s", "c,s,E", 2,
|
{"wrctl", "c,s", "c,s,E", 2,
|
||||||
OP_MATCH_WRCTL, OP_MASK_WRCTL, 0, no_overflow},
|
OP_MATCH_WRCTL, OP_MASK_WRCTL, 0, no_overflow},
|
||||||
|
{"wrprs", "d,s", "d,s,E", 2,
|
||||||
|
OP_MATCH_WRPRS, OP_MASK_RRT|OP_MASK_ROPX|OP_MASK_ROP, 0, no_overflow},
|
||||||
{"xor", "d,s,t", "d,s,t,E", 3,
|
{"xor", "d,s,t", "d,s,t,E", 3,
|
||||||
OP_MATCH_XOR, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
|
OP_MATCH_XOR, OP_MASK_ROPX | OP_MASK_ROP, 0, no_overflow},
|
||||||
{"xorhi", "t,s,u", "t,s,u,E", 3,
|
{"xorhi", "t,s,u", "t,s,u,E", 3,
|
||||||
|
Reference in New Issue
Block a user