2013-02-06 Sandra Loosemore <sandra@codesourcery.com>

Andrew Jenner <andrew@codesourcery.com>

	Based on patches from Altera Corporation.

	bfd/
	* Makefile.am (ALL_MACHINES): Add cpu-nios2.lo.
	(ALL_MACHINES_CFILES): Add cpu-nios2.c.
	(BFD_BACKENDS): Add elf32-nios2.lo.
	(BFD32_BACKENDS_CFILES): Add elf32-nios2.c.
	* Makefile.in: Regenerated.
	* configure.in: Add entries for bfd_elf32_bignios2_vec and
	bfd_elf32_littlenios2_vec.
	* configure: Regenerated.
	* config.bfd: Add cases for nios2.
	* archures.c (enum bfd_architecture): Add bfd_arch_nios2.
	(bfd_mach_nios2): Define.
	(bfd_nios2_arch): Declare.
	(bfd_archures_list): Add bfd_nios2_arch.
	* targets.c (bfd_elf32_bignios2_vec): Declare.
	(bfd_elf32_littlenios2_vec): Declare.
	(_bfd_target_vector): Add entries for bfd_elf32_bignios2_vec and
	bfd_elf32_littlenios2_vec.
	* elf-bfd.h (enum elf_target_id): Add NIOS2_ELF_DATA.
	* reloc.c (enum bfd_reloc_code_real): Add Nios II relocations.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Regenerated.
	* cpu-nios2.c: New file.
	* elf32-nios2.c: New file.

	opcodes/
	* Makefile.am (TARGET_LIBOPCODES_CFILES): Add nios2-dis.c and
	nios2-opc.c.
	* Makefile.in: Regenerated.
	* configure.in: Add case for bfd_nios2_arch.
	* configure: Regenerated.
	* disassemble.c (ARCH_nios2): Define.
	(disassembler): Add case for bfd_arch_nios2.
	* nios2-dis.c: New file.
	* nios2-opc.c: New file.

	include/
	* dis-asm.h (print_insn_big_nios2): Declare.
	(print_insn_little_nios2): Declare.

	include/elf
	* nios2.h: New file.

	include/opcode/
	* nios2.h: New file.

	gas/
	* Makefile.am (TARGET_CPU_CFILES): Add config/tc-nios2.c.
	(TARGET_CPU_HFILES): Add config/tc-nios2.h.
	* Makefile.in: Regenerated.
	* configure.tgt: Add case for nios2*-linux*.
	* config/obj-elf.c: Conditionally include elf/nios2.h.
	* config/tc-nios2.c: New file.
	* config/tc-nios2.h: New file.
	* doc/Makefile.am (CPU_DOCS): Add c-nios2.texi.
	* doc/Makefile.in: Regenerated.
	* doc/all.texi: Set NIOSII.
	* doc/as.texinfo (Overview): Add Nios II options.
	(Machine Dependencies): Include c-nios2.texi.
	* doc/c-nios2.texi: New file.
	* NEWS: Note Altera Nios II support.

	gas/testsuite/
	* gas/nios2/add.d: New.
	* gas/nios2/add.s: New.
	* gas/nios2/align_fill.d: New.
	* gas/nios2/align_fill.s: New.
	* gas/nios2/align_text.d: New.
	* gas/nios2/align_text.s: New.
	* gas/nios2/and.d: New.
	* gas/nios2/and.s: New.
	* gas/nios2/branch.d: New.
	* gas/nios2/branch.s: New.
	* gas/nios2/break.d: New.
	* gas/nios2/break.s: New.
	* gas/nios2/bret.d: New.
	* gas/nios2/bret.s: New.
	* gas/nios2/cache.d: New.
	* gas/nios2/cache.s: New.
	* gas/nios2/call26.d: New.
	* gas/nios2/call26.s: New.
	* gas/nios2/call.d: New.
	* gas/nios2/call.s: New.
	* gas/nios2/cmp.d: New.
	* gas/nios2/cmp.s: New.
	* gas/nios2/comments.d: New.
	* gas/nios2/comments.s: New.
	* gas/nios2/complex.d: New.
	* gas/nios2/complex.s: New.
	* gas/nios2/ctl.d: New.
	* gas/nios2/ctl.s: New.
	* gas/nios2/custom.d: New.
	* gas/nios2/custom.s: New.
	* gas/nios2/etbt.d: New.
	* gas/nios2/etbt.s: New.
	* gas/nios2/flushda.d: New.
	* gas/nios2/flushda.s: New.
	* gas/nios2/illegal.l: New.
	* gas/nios2/illegal.s: New.
	* gas/nios2/jmp.d: New.
	* gas/nios2/jmp.s: New.
	* gas/nios2/ldb.d: New.
	* gas/nios2/ldb.s: New.
	* gas/nios2/ldh.d: New.
	* gas/nios2/ldh.s: New.
	* gas/nios2/ldw.d: New.
	* gas/nios2/ldw.s: New.
	* gas/nios2/lineseparator.d: New.
	* gas/nios2/lineseparator.s: New.
	* gas/nios2/mov.d: New.
	* gas/nios2/movia.d: New.
	* gas/nios2/movia.s: New.
	* gas/nios2/movi.d: New.
	* gas/nios2/movi.s: New.
	* gas/nios2/mov.s: New.
	* gas/nios2/mul.d: New.
	* gas/nios2/mul.s: New.
	* gas/nios2/nios2.exp: New.
	* gas/nios2/nor.d: New.
	* gas/nios2/nor.s: New.
	* gas/nios2/or.d: New.
	* gas/nios2/or.s: New.
	* gas/nios2/ret.d: New.
	* gas/nios2/ret.s: New.
	* gas/nios2/rol.d: New.
	* gas/nios2/rol.s: New.
	* gas/nios2/rotate.d: New.
	* gas/nios2/rotate.s: New.
	* gas/nios2/stb.d: New.
	* gas/nios2/stb.s: New.
	* gas/nios2/sth.d: New.
	* gas/nios2/sth.s: New.
	* gas/nios2/stw.d: New.
	* gas/nios2/stw.s: New.
	* gas/nios2/sub.d: New.
	* gas/nios2/sub.s: New.
	* gas/nios2/sync.d: New.
	* gas/nios2/sync.s: New.
	* gas/nios2/trap.d: New.
	* gas/nios2/trap.s: New.
	* gas/nios2/tret.d: New.
	* gas/nios2/tret.s: New.
	* gas/nios2/warn_noat.l: New.
	* gas/nios2/warn_noat.s: New.
	* gas/nios2/warn_nobreak.l: New.
	* gas/nios2/warn_nobreak.s: New.
	* gas/nios2/xor.d: New.
	* gas/nios2/xor.s: New.

	ld/
	* Makefile.am (enios2elf.c): New rule.
	* Makefile.in: Regenerated.
	* configure.tgt: Add case for nios2*-*-*.
	* emulparams/nios2elf.sh: New file.
	* NEWS: Note Altera Nios II support.

	ld/testsuite/
	* ld-nios2/emit-relocs-1a.s: New.
	* ld-nios2/emit-relocs-1b.s: New.
	* ld-nios2/emit-relocs-1.d: New.
	* ld-nios2/emit-relocs-1.ld: New.
	* ld-nios2/gprel.d: New.
	* ld-nios2/gprel.s: New.
	* ld-nios2/hilo16.d: New.
	* ld-nios2/hilo16.s: New.
	* ld-nios2/hilo16_symbol.s: New.
	* ld-nios2/imm5.d: New.
	* ld-nios2/imm5.s: New.
	* ld-nios2/imm5_symbol.s: New.
	* ld-nios2/nios2.exp: New.
	* ld-nios2/pcrel16.d: New.
	* ld-nios2/pcrel16_label.s: New.
	* ld-nios2/pcrel16.s: New.
	* ld-nios2/relax_callr.d: New.
	* ld-nios2/relax_callr.ld: New.
	* ld-nios2/relax_callr.s: New.
	* ld-nios2/relax_cjmp.d: New.
	* ld-nios2/relax_cjmp.s: New.
	* ld-nios2/relax_jmp.ld: New.
	* ld-nios2/relax_section.d: New.
	* ld-nios2/relax_section.s: New.
	* ld-nios2/relax_ujmp.d: New.
	* ld-nios2/relax_ujmp.s: New.
	* ld-nios2/reloc.d: New.
	* ld-nios2/reloc.s: New.
	* ld-nios2/reloc_symbol.s: New.
	* ld-nios2/s16.d: New.
	* ld-nios2/s16.s: New.
	* ld-nios2/s16_symbol.s: New.
	* ld-nios2/u16.d: New.
	* ld-nios2/u16.s: New.
	* ld-nios2/u16_symbol.s: New.
	* ld-elf/indirect.exp: Skip on targets that don't support
	-shared -fPIC.
	* ld-elfcomm/elfcomm.exp: Build with -G0 for nios2.
	* ld-plugin/lto.exp: Skip shared library tests on targets that
	don't support them.  Skip execution tests on non-native targets.

	binutils/
	* readelf.c: Include elf/nios2.h.
	(dump_relocations): Add case for EM_ALTERA_NIOS2.
	(get_nios2_dynamic_type): New.
	(get_dynamic_type): Add case for EM_ALTERA_NIOS2.
	(is_32bit_abs_reloc): Fix EM_ALTERA_NIOS2 case.
	(is_16bit_abs_reloc): Likewise.
	(is_none_reloc): Add EM_ALTERA_NIOS2 and EM_NIOS32 cases.
	* NEWS: Note Altera Nios II support.
	* MAINTAINERS: Add Nios II maintainers.
This commit is contained in:
Sandra Loosemore 2013-02-06 23:22:26 +00:00
parent 574b0b3165
commit 36591ba149
176 changed files with 13183 additions and 4 deletions

View file

@ -1,3 +1,32 @@
2013-02-06 Sandra Loosemore <sandra@codesourcery.com>
Andrew Jenner <andrew@codesourcery.com>
Based on patches from Altera Corporation.
* Makefile.am (ALL_MACHINES): Add cpu-nios2.lo.
(ALL_MACHINES_CFILES): Add cpu-nios2.c.
(BFD_BACKENDS): Add elf32-nios2.lo.
(BFD32_BACKENDS_CFILES): Add elf32-nios2.c.
* Makefile.in: Regenerated.
* configure.in: Add entries for bfd_elf32_bignios2_vec and
bfd_elf32_littlenios2_vec.
* configure: Regenerated.
* config.bfd: Add cases for nios2.
* archures.c (enum bfd_architecture): Add bfd_arch_nios2.
(bfd_mach_nios2): Define.
(bfd_nios2_arch): Declare.
(bfd_archures_list): Add bfd_nios2_arch.
* targets.c (bfd_elf32_bignios2_vec): Declare.
(bfd_elf32_littlenios2_vec): Declare.
(_bfd_target_vector): Add entries for bfd_elf32_bignios2_vec and
bfd_elf32_littlenios2_vec.
* elf-bfd.h (enum elf_target_id): Add NIOS2_ELF_DATA.
* reloc.c (enum bfd_reloc_code_real): Add Nios II relocations.
* bfd-in2.h: Regenerated.
* libbfd.h: Regenerated.
* cpu-nios2.c: New file.
* elf32-nios2.c: New file.
2013-02-06 Alan Modra <amodra@gmail.com>
* elf32-arm.c (elf32_arm_final_link_relocate): Only test for

View file

@ -136,6 +136,7 @@ ALL_MACHINES = \
cpu-moxie.lo \
cpu-msp430.lo \
cpu-mt.lo \
cpu-nios2.lo \
cpu-ns32k.lo \
cpu-openrisc.lo \
cpu-or32.lo \
@ -220,6 +221,7 @@ ALL_MACHINES_CFILES = \
cpu-msp430.c \
cpu-mt.c \
cpu-ns32k.c \
cpu-nios2.c \
cpu-openrisc.c \
cpu-or32.c \
cpu-pdp11.c \
@ -348,6 +350,7 @@ BFD32_BACKENDS = \
elf32-moxie.lo \
elf32-msp430.lo \
elf32-mt.lo \
elf32-nios2.lo \
elf32-openrisc.lo \
elf32-or32.lo \
elf32-pj.lo \
@ -537,6 +540,7 @@ BFD32_BACKENDS_CFILES = \
elf32-moxie.c \
elf32-msp430.c \
elf32-mt.c \
elf32-nios2.c \
elf32-openrisc.c \
elf32-or32.c \
elf32-pj.c \

View file

@ -437,6 +437,7 @@ ALL_MACHINES = \
cpu-moxie.lo \
cpu-msp430.lo \
cpu-mt.lo \
cpu-nios2.lo \
cpu-ns32k.lo \
cpu-openrisc.lo \
cpu-or32.lo \
@ -521,6 +522,7 @@ ALL_MACHINES_CFILES = \
cpu-msp430.c \
cpu-mt.c \
cpu-ns32k.c \
cpu-nios2.c \
cpu-openrisc.c \
cpu-or32.c \
cpu-pdp11.c \
@ -650,6 +652,7 @@ BFD32_BACKENDS = \
elf32-moxie.lo \
elf32-msp430.lo \
elf32-mt.lo \
elf32-nios2.lo \
elf32-openrisc.lo \
elf32-or32.lo \
elf32-pj.lo \
@ -839,6 +842,7 @@ BFD32_BACKENDS_CFILES = \
elf32-moxie.c \
elf32-msp430.c \
elf32-mt.c \
elf32-nios2.c \
elf32-openrisc.c \
elf32-or32.c \
elf32-pj.c \
@ -1345,6 +1349,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-moxie.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-msp430.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-mt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-nios2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-ns32k.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-openrisc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu-or32.Plo@am__quote@
@ -1433,6 +1438,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-moxie.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-msp430.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-mt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-nios2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-openrisc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-or32.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/elf32-pj.Plo@am__quote@

View file

@ -468,6 +468,8 @@ DESCRIPTION
.#define bfd_mach_tilegx32 2
. bfd_arch_aarch64, {* AArch64 *}
.#define bfd_mach_aarch64 0
. bfd_arch_nios2,
.#define bfd_mach_nios2 0
. bfd_arch_last
. };
*/
@ -560,6 +562,7 @@ extern const bfd_arch_info_type bfd_mn10300_arch;
extern const bfd_arch_info_type bfd_moxie_arch;
extern const bfd_arch_info_type bfd_msp430_arch;
extern const bfd_arch_info_type bfd_mt_arch;
extern const bfd_arch_info_type bfd_nios2_arch;
extern const bfd_arch_info_type bfd_ns32k_arch;
extern const bfd_arch_info_type bfd_openrisc_arch;
extern const bfd_arch_info_type bfd_or32_arch;
@ -648,6 +651,7 @@ static const bfd_arch_info_type * const bfd_archures_list[] =
&bfd_moxie_arch,
&bfd_msp430_arch,
&bfd_mt_arch,
&bfd_nios2_arch,
&bfd_ns32k_arch,
&bfd_openrisc_arch,
&bfd_or32_arch,

View file

@ -2199,6 +2199,8 @@ enum bfd_architecture
#define bfd_mach_tilegx32 2
bfd_arch_aarch64, /* AArch64 */
#define bfd_mach_aarch64 0
bfd_arch_nios2,
#define bfd_mach_nios2 0
bfd_arch_last
};
@ -4913,6 +4915,42 @@ a matching LO8XG part. */
BFD_RELOC_MSP430_2X_PCREL,
BFD_RELOC_MSP430_RL_PCREL,
/* Relocations used by the Altera Nios II core. */
BFD_RELOC_NIOS2_S16,
BFD_RELOC_NIOS2_U16,
BFD_RELOC_NIOS2_CALL26,
BFD_RELOC_NIOS2_IMM5,
BFD_RELOC_NIOS2_CACHE_OPX,
BFD_RELOC_NIOS2_IMM6,
BFD_RELOC_NIOS2_IMM8,
BFD_RELOC_NIOS2_HI16,
BFD_RELOC_NIOS2_LO16,
BFD_RELOC_NIOS2_HIADJ16,
BFD_RELOC_NIOS2_GPREL,
BFD_RELOC_NIOS2_UJMP,
BFD_RELOC_NIOS2_CJMP,
BFD_RELOC_NIOS2_CALLR,
BFD_RELOC_NIOS2_ALIGN,
BFD_RELOC_NIOS2_GOT16,
BFD_RELOC_NIOS2_CALL16,
BFD_RELOC_NIOS2_GOTOFF_LO,
BFD_RELOC_NIOS2_GOTOFF_HA,
BFD_RELOC_NIOS2_PCREL_LO,
BFD_RELOC_NIOS2_PCREL_HA,
BFD_RELOC_NIOS2_TLS_GD16,
BFD_RELOC_NIOS2_TLS_LDM16,
BFD_RELOC_NIOS2_TLS_LDO16,
BFD_RELOC_NIOS2_TLS_IE16,
BFD_RELOC_NIOS2_TLS_LE16,
BFD_RELOC_NIOS2_TLS_DTPMOD,
BFD_RELOC_NIOS2_TLS_DTPREL,
BFD_RELOC_NIOS2_TLS_TPREL,
BFD_RELOC_NIOS2_COPY,
BFD_RELOC_NIOS2_GLOB_DAT,
BFD_RELOC_NIOS2_JUMP_SLOT,
BFD_RELOC_NIOS2_RELATIVE,
BFD_RELOC_NIOS2_GOTOFF,
/* IQ2000 Relocations. */
BFD_RELOC_IQ2000_OFFSET_16,
BFD_RELOC_IQ2000_OFFSET_21,

View file

@ -109,6 +109,7 @@ m68*) targ_archs=bfd_m68k_arch ;;
m88*) targ_archs=bfd_m88k_arch ;;
microblaze*) targ_archs=bfd_microblaze_arch ;;
mips*) targ_archs=bfd_mips_arch ;;
nios2*) targ_archs=bfd_nios2_arch ;;
or32*) targ_archs=bfd_or32_arch ;;
pdp11*) targ_archs=bfd_pdp11_arch ;;
pj*) targ_archs="bfd_pj_arch bfd_i386_arch";;
@ -1144,6 +1145,21 @@ case "${targ}" in
targ_underscore=yes
;;
nios2eb-*-*)
targ_defvec=bfd_elf32_bignios2_vec
targ_selvecs=bfd_elf32_littlenios2_vec
;;
nios2el-*-*)
targ_defvec=bfd_elf32_littlenios2_vec
targ_selvecs=bfd_elf32_bignios2_vec
;;
nios2-*-*)
targ_defvec=bfd_elf32_littlenios2_vec
targ_selvecs=bfd_elf32_bignios2_vec
;;
openrisc-*-elf)
targ_defvec=bfd_elf32_openrisc_vec
;;

2
bfd/configure vendored
View file

@ -15228,6 +15228,7 @@ do
bfd_elf32_bigmips_vxworks_vec)
tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_bigmoxie_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;;
bfd_elf32_bignios2_vec) tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
bfd_elf32_cr16_vec) tb="$tb elf32-cr16.lo elf32.lo $elf" ;;
bfd_elf32_cr16c_vec) tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
@ -15270,6 +15271,7 @@ do
bfd_elf32_littlemips_vxworks_vec)
tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_littlemoxie_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;;
bfd_elf32_littlenios2_vec) tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
bfd_elf32_m32c_vec) tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;

View file

@ -725,6 +725,7 @@ do
bfd_elf32_bigmips_vxworks_vec)
tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_bigmoxie_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;;
bfd_elf32_bignios2_vec) tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
bfd_elf32_cr16_vec) tb="$tb elf32-cr16.lo elf32.lo $elf" ;;
bfd_elf32_cr16c_vec) tb="$tb elf32-cr16c.lo elf32.lo $elf" ;;
bfd_elf32_cris_vec) tb="$tb elf32-cris.lo elf32.lo $elf" ;;
@ -767,6 +768,7 @@ do
bfd_elf32_littlemips_vxworks_vec)
tb="$tb elf32-mips.lo elfxx-mips.lo elf-vxworks.lo elf32.lo $elf ecofflink.lo" ;;
bfd_elf32_littlemoxie_vec) tb="$tb elf32-moxie.lo elf32.lo $elf" ;;
bfd_elf32_littlenios2_vec) tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
bfd_elf32_m32c_vec) tb="$tb elf32-m32c.lo elf32.lo $elf" ;;
bfd_elf32_m32r_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;
bfd_elf32_m32rle_vec) tb="$tb elf32-m32r.lo elf32.lo $elf" ;;

44
bfd/cpu-nios2.c Normal file
View file

@ -0,0 +1,44 @@
/* BFD support for the Altera Nios II processor.
Copyright (C) 2012, 2013 Free Software Foundation, Inc.
Contributed by Nigel Gray (ngray@altera.com).
Contributed by Mentor Graphics, Inc.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
MA 02110-1301, USA. */
#include "sysdep.h"
#include "bfd.h"
#include "libbfd.h"
#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT) \
{ \
BITS_WORD, /* bits in a word */ \
BITS_ADDR, /* bits in an address */ \
8, /* 8 bits in a byte */ \
bfd_arch_nios2, \
NUMBER, \
"nios2", \
PRINT, \
3, \
DEFAULT, \
bfd_default_compatible, \
bfd_default_scan, \
bfd_arch_default_fill, \
NEXT \
}
const bfd_arch_info_type bfd_nios2_arch = N (32, 32, 0, "nios2", TRUE, NULL);

View file

@ -421,6 +421,7 @@ enum elf_target_id
MICROBLAZE_ELF_DATA,
MIPS_ELF_DATA,
MN10300_ELF_DATA,
NIOS2_ELF_DATA,
PPC32_ELF_DATA,
PPC64_ELF_DATA,
S390_ELF_DATA,

4141
bfd/elf32-nios2.c Normal file

File diff suppressed because it is too large Load diff

View file

@ -2370,6 +2370,40 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
"BFD_RELOC_MSP430_16_BYTE",
"BFD_RELOC_MSP430_2X_PCREL",
"BFD_RELOC_MSP430_RL_PCREL",
"BFD_RELOC_NIOS2_S16",
"BFD_RELOC_NIOS2_U16",
"BFD_RELOC_NIOS2_CALL26",
"BFD_RELOC_NIOS2_IMM5",
"BFD_RELOC_NIOS2_CACHE_OPX",
"BFD_RELOC_NIOS2_IMM6",
"BFD_RELOC_NIOS2_IMM8",
"BFD_RELOC_NIOS2_HI16",
"BFD_RELOC_NIOS2_LO16",
"BFD_RELOC_NIOS2_HIADJ16",
"BFD_RELOC_NIOS2_GPREL",
"BFD_RELOC_NIOS2_UJMP",
"BFD_RELOC_NIOS2_CJMP",
"BFD_RELOC_NIOS2_CALLR",
"BFD_RELOC_NIOS2_ALIGN",
"BFD_RELOC_NIOS2_GOT16",
"BFD_RELOC_NIOS2_CALL16",
"BFD_RELOC_NIOS2_GOTOFF_LO",
"BFD_RELOC_NIOS2_GOTOFF_HA",
"BFD_RELOC_NIOS2_PCREL_LO",
"BFD_RELOC_NIOS2_PCREL_HA",
"BFD_RELOC_NIOS2_TLS_GD16",
"BFD_RELOC_NIOS2_TLS_LDM16",
"BFD_RELOC_NIOS2_TLS_LDO16",
"BFD_RELOC_NIOS2_TLS_IE16",
"BFD_RELOC_NIOS2_TLS_LE16",
"BFD_RELOC_NIOS2_TLS_DTPMOD",
"BFD_RELOC_NIOS2_TLS_DTPREL",
"BFD_RELOC_NIOS2_TLS_TPREL",
"BFD_RELOC_NIOS2_COPY",
"BFD_RELOC_NIOS2_GLOB_DAT",
"BFD_RELOC_NIOS2_JUMP_SLOT",
"BFD_RELOC_NIOS2_RELATIVE",
"BFD_RELOC_NIOS2_GOTOFF",
"BFD_RELOC_IQ2000_OFFSET_16",
"BFD_RELOC_IQ2000_OFFSET_21",
"BFD_RELOC_IQ2000_UHI16",

View file

@ -5664,6 +5664,77 @@ ENUMX
ENUMDOC
msp430 specific relocation codes
ENUM
BFD_RELOC_NIOS2_S16
ENUMX
BFD_RELOC_NIOS2_U16
ENUMX
BFD_RELOC_NIOS2_CALL26
ENUMX
BFD_RELOC_NIOS2_IMM5
ENUMX
BFD_RELOC_NIOS2_CACHE_OPX
ENUMX
BFD_RELOC_NIOS2_IMM6
ENUMX
BFD_RELOC_NIOS2_IMM8
ENUMX
BFD_RELOC_NIOS2_HI16
ENUMX
BFD_RELOC_NIOS2_LO16
ENUMX
BFD_RELOC_NIOS2_HIADJ16
ENUMX
BFD_RELOC_NIOS2_GPREL
ENUMX
BFD_RELOC_NIOS2_UJMP
ENUMX
BFD_RELOC_NIOS2_CJMP
ENUMX
BFD_RELOC_NIOS2_CALLR
ENUMX
BFD_RELOC_NIOS2_ALIGN
ENUMX
BFD_RELOC_NIOS2_GOT16
ENUMX
BFD_RELOC_NIOS2_CALL16
ENUMX
BFD_RELOC_NIOS2_GOTOFF_LO
ENUMX
BFD_RELOC_NIOS2_GOTOFF_HA
ENUMX
BFD_RELOC_NIOS2_PCREL_LO
ENUMX
BFD_RELOC_NIOS2_PCREL_HA
ENUMX
BFD_RELOC_NIOS2_TLS_GD16
ENUMX
BFD_RELOC_NIOS2_TLS_LDM16
ENUMX
BFD_RELOC_NIOS2_TLS_LDO16
ENUMX
BFD_RELOC_NIOS2_TLS_IE16
ENUMX
BFD_RELOC_NIOS2_TLS_LE16
ENUMX
BFD_RELOC_NIOS2_TLS_DTPMOD
ENUMX
BFD_RELOC_NIOS2_TLS_DTPREL
ENUMX
BFD_RELOC_NIOS2_TLS_TPREL
ENUMX
BFD_RELOC_NIOS2_COPY
ENUMX
BFD_RELOC_NIOS2_GLOB_DAT
ENUMX
BFD_RELOC_NIOS2_JUMP_SLOT
ENUMX
BFD_RELOC_NIOS2_RELATIVE
ENUMX
BFD_RELOC_NIOS2_GOTOFF
ENUMDOC
Relocations used by the Altera Nios II core.
ENUM
BFD_RELOC_IQ2000_OFFSET_16
ENUMX

View file

@ -607,6 +607,7 @@ extern const bfd_target bfd_elf32_bigarm_vxworks_vec;
extern const bfd_target bfd_elf32_bigmips_vec;
extern const bfd_target bfd_elf32_bigmips_vxworks_vec;
extern const bfd_target bfd_elf32_bigmoxie_vec;
extern const bfd_target bfd_elf32_bignios2_vec;
extern const bfd_target bfd_elf32_cr16_vec;
extern const bfd_target bfd_elf32_cr16c_vec;
extern const bfd_target bfd_elf32_cris_vec;
@ -646,6 +647,7 @@ extern const bfd_target bfd_elf32_littlearm_vxworks_vec;
extern const bfd_target bfd_elf32_littlemips_vec;
extern const bfd_target bfd_elf32_littlemips_vxworks_vec;
extern const bfd_target bfd_elf32_littlemoxie_vec;
extern const bfd_target bfd_elf32_littlenios2_vec;
extern const bfd_target bfd_elf32_m32c_vec;
extern const bfd_target bfd_elf32_m32r_vec;
extern const bfd_target bfd_elf32_m32rle_vec;
@ -984,6 +986,7 @@ static const bfd_target * const _bfd_target_vector[] =
&bfd_elf32_bigmips_vec,
&bfd_elf32_bigmips_vxworks_vec,
&bfd_elf32_bigmoxie_vec,
&bfd_elf32_bignios2_vec,
&bfd_elf32_cr16_vec,
&bfd_elf32_cr16c_vec,
&bfd_elf32_cris_vec,
@ -1025,6 +1028,7 @@ static const bfd_target * const _bfd_target_vector[] =
&bfd_elf32_littlemips_vec,
&bfd_elf32_littlemips_vxworks_vec,
&bfd_elf32_littlemoxie_vec,
&bfd_elf32_littlenios2_vec,
&bfd_elf32_m32c_vec,
&bfd_elf32_m32r_vec,
&bfd_elf32_m32rle_vec,

View file

@ -1,3 +1,18 @@
2013-02-06 Sandra Loosemore <sandra@codesourcery.com>
Andrew Jenner <andrew@codesourcery.com>
Based on patches from Altera Corporation.
* readelf.c: Include elf/nios2.h.
(dump_relocations): Add case for EM_ALTERA_NIOS2.
(get_nios2_dynamic_type): New.
(get_dynamic_type): Add case for EM_ALTERA_NIOS2.
(is_32bit_abs_reloc): Fix EM_ALTERA_NIOS2 case.
(is_16bit_abs_reloc): Likewise.
(is_none_reloc): Add EM_ALTERA_NIOS2 and EM_NIOS32 cases.
* NEWS: Note Altera Nios II support.
* MAINTAINERS: Add Nios II maintainers.
2013-01-29 Xi Wang <xi.wang@gmail.com>
* readelf.c (process_version_sections): Fix overflow checks to

View file

@ -107,6 +107,8 @@ responsibility among the other maintainers.
Moxie Anthony Green <green@moxielogic.com>
MSP430 Dmitry Diky <diwil@spec.ru>
NetBSD support Matt Thomas <matt@netbsd.org>
Nios II Sandra Loosemore <sandra@codesourcery.com>
Nios II Andrew Jenner <andrew@codesourcery.com>
PPC Geoff Keating <geoffk@geoffk.org>
PPC Alan Modra <amodra@gmail.com>
PPC vector ext Aldy Hernandez <aldyh@redhat.com>

View file

@ -1,5 +1,7 @@
-*- text -*-
* Add support for Altera Nios II.
Changes in 2.23:
* Add support for the VLE extension to the PowerPC architecture.

View file

@ -153,6 +153,8 @@
#include "elf/xstormy16.h"
#include "elf/xtensa.h"
#include "elf/nios2.h"
#include "getopt.h"
#include "libiberty.h"
#include "safe-ctype.h"
@ -1288,6 +1290,10 @@ dump_relocations (FILE * file,
case EM_XGATE:
rtype = elf_xgate_reloc_type (type);
break;
case EM_ALTERA_NIOS2:
rtype = elf_nios2_reloc_type (type);
break;
}
if (rtype == NULL)
@ -1686,6 +1692,17 @@ get_tic6x_dynamic_type (unsigned long type)
}
}
static const char *
get_nios2_dynamic_type (unsigned long type)
{
switch (type)
{
case DT_NIOS2_GP: return "NIOS2_GP";
default:
return NULL;
}
}
static const char *
get_dynamic_type (unsigned long type)
{
@ -1800,6 +1817,9 @@ get_dynamic_type (unsigned long type)
case EM_TI_C6000:
result = get_tic6x_dynamic_type (type);
break;
case EM_ALTERA_NIOS2:
result = get_nios2_dynamic_type (type);
break;
default:
result = NULL;
break;
@ -10074,6 +10094,7 @@ is_32bit_abs_reloc (unsigned int reloc_type)
case EM_MT:
return reloc_type == 2; /* R_MT_32. */
case EM_ALTERA_NIOS2:
return reloc_type == 12; /* R_NIOS2_BFD_RELOC_32. */
case EM_NIOS32:
return reloc_type == 1; /* R_NIOS_32. */
case EM_OPENRISC:
@ -10324,6 +10345,7 @@ is_16bit_abs_reloc (unsigned int reloc_type)
case EM_MSP430_OLD:
return reloc_type == 5; /* R_MSP430_16_BYTE. */
case EM_ALTERA_NIOS2:
return reloc_type == 13; /* R_NIOS2_BFD_RELOC_16. */
case EM_NIOS32:
return reloc_type == 9; /* R_NIOS_16. */
case EM_TI_C6000:
@ -10380,6 +10402,8 @@ is_none_reloc (unsigned int reloc_type)
case EM_TILEPRO: /* R_TILEPRO_NONE. */
case EM_XC16X:
case EM_C166: /* R_XC16X_NONE. */
case EM_ALTERA_NIOS2: /* R_NIOS2_NONE. */
case EM_NIOS32: /* R_NIOS_NONE. */
return reloc_type == 0;
case EM_AARCH64:
return reloc_type == 0 || reloc_type == 256;

View file

@ -1,3 +1,23 @@
2013-02-06 Sandra Loosemore <sandra@codesourcery.com>
Andrew Jenner <andrew@codesourcery.com>
Based on patches from Altera Corporation.
* Makefile.am (TARGET_CPU_CFILES): Add config/tc-nios2.c.
(TARGET_CPU_HFILES): Add config/tc-nios2.h.
* Makefile.in: Regenerated.
* configure.tgt: Add case for nios2*-linux*.
* config/obj-elf.c: Conditionally include elf/nios2.h.
* config/tc-nios2.c: New file.
* config/tc-nios2.h: New file.
* doc/Makefile.am (CPU_DOCS): Add c-nios2.texi.
* doc/Makefile.in: Regenerated.
* doc/all.texi: Set NIOSII.
* doc/as.texinfo (Overview): Add Nios II options.
(Machine Dependencies): Include c-nios2.texi.
* doc/c-nios2.texi: New file.
* NEWS: Note Altera Nios II support.
2013-02-06 Alan Modra <amodra@gmail.com>
PR gas/14255

View file

@ -164,6 +164,7 @@ TARGET_CPU_CFILES = \
config/tc-moxie.c \
config/tc-msp430.c \
config/tc-mt.c \
config/tc-nios2.c \
config/tc-ns32k.c \
config/tc-openrisc.c \
config/tc-or32.c \
@ -234,6 +235,7 @@ TARGET_CPU_HFILES = \
config/tc-mn10300.h \
config/tc-msp430.h \
config/tc-mt.h \
config/tc-nios2.h \
config/tc-ns32k.h \
config/tc-openrisc.h \
config/tc-or32.h \

View file

@ -433,6 +433,7 @@ TARGET_CPU_CFILES = \
config/tc-moxie.c \
config/tc-msp430.c \
config/tc-mt.c \
config/tc-nios2.c \
config/tc-ns32k.c \
config/tc-openrisc.c \
config/tc-or32.c \
@ -503,6 +504,7 @@ TARGET_CPU_HFILES = \
config/tc-mn10300.h \
config/tc-msp430.h \
config/tc-mt.h \
config/tc-nios2.h \
config/tc-ns32k.h \
config/tc-openrisc.h \
config/tc-or32.h \
@ -855,6 +857,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-moxie.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-msp430.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-mt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-nios2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-ns32k.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-openrisc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tc-or32.Po@am__quote@
@ -1468,6 +1471,20 @@ tc-mt.obj: config/tc-mt.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-mt.obj `if test -f 'config/tc-mt.c'; then $(CYGPATH_W) 'config/tc-mt.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-mt.c'; fi`
tc-nios2.o: config/tc-nios2.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-nios2.o -MD -MP -MF $(DEPDIR)/tc-nios2.Tpo -c -o tc-nios2.o `test -f 'config/tc-nios2.c' || echo '$(srcdir)/'`config/tc-nios2.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-nios2.Tpo $(DEPDIR)/tc-nios2.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-nios2.c' object='tc-nios2.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-nios2.o `test -f 'config/tc-nios2.c' || echo '$(srcdir)/'`config/tc-nios2.c
tc-nios2.obj: config/tc-nios2.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-nios2.obj -MD -MP -MF $(DEPDIR)/tc-nios2.Tpo -c -o tc-nios2.obj `if test -f 'config/tc-nios2.c'; then $(CYGPATH_W) 'config/tc-nios2.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-nios2.c'; fi`
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-nios2.Tpo $(DEPDIR)/tc-nios2.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='config/tc-nios2.c' object='tc-nios2.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o tc-nios2.obj `if test -f 'config/tc-nios2.c'; then $(CYGPATH_W) 'config/tc-nios2.c'; else $(CYGPATH_W) '$(srcdir)/config/tc-nios2.c'; fi`
tc-ns32k.o: config/tc-ns32k.c
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tc-ns32k.o -MD -MP -MF $(DEPDIR)/tc-ns32k.Tpo -c -o tc-ns32k.o `test -f 'config/tc-ns32k.c' || echo '$(srcdir)/'`config/tc-ns32k.c
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/tc-ns32k.Tpo $(DEPDIR)/tc-ns32k.Po

View file

@ -1,5 +1,7 @@
-*- text -*-
* Add support for Altera Nios II.
* Add support for the Imagination Technologies Meta processor.
* Add support for the v850e3v5.

View file

@ -62,6 +62,10 @@
#include "elf/mep.h"
#endif
#ifdef TC_NIOS2
#include "elf/nios2.h"
#endif
static void obj_elf_line (int);
static void obj_elf_size (int);
static void obj_elf_type (int);

3067
gas/config/tc-nios2.c Normal file

File diff suppressed because it is too large Load diff

125
gas/config/tc-nios2.h Normal file
View file

@ -0,0 +1,125 @@
/* Definitions for Altera Nios II assembler.
Copyright (C) 2012, 2013 Free Software Foundation, Inc.
Contributed by Nigel Gray (ngray@altera.com).
Contributed by Mentor Graphics, Inc.
This file is part of GAS, the GNU Assembler.
GAS is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
GAS is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GAS; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
#ifndef TC_NIOS2
#define TC_NIOS2
/* If unspecified, default to little endian. We can explicitly specify
* a big-endian default by configuring with --target=nios2eb-elf. We
* can override the default with the -EB and -EL options. */
#ifndef TARGET_BYTES_BIG_ENDIAN
#define TARGET_BYTES_BIG_ENDIAN 0
#endif
/* Words are big enough to hold addresses. */
#define WORKING_DOT_WORD 1
#ifdef OBJ_ELF
extern const char *nios2_target_format (void);
#define TARGET_FORMAT nios2_target_format ()
#define TARGET_ARCH bfd_arch_nios2
#endif
/* A NIOS2 instruction consists of tokens and separator characters
the tokens are things like the instruction name (add, or jmp etc),
the register indices ($5, $7 etc), and constant expressions. The
separator characters are commas, brackets and space.
The instruction name is always separated from other tokens by a space
The maximum number of tokens in an instruction is 5 (the instruction name,
3 arguments, and a 4th string representing the expected instructin opcode
after assembly. The latter is only used when the assemble is running in
self test mode, otherwise its presence will generate an error. */
#define NIOS2_MAX_INSN_TOKENS 6
/* There are no machine-specific operands so we #define this to nothing. */
#define md_operand(x)
/* Function prototypes exported to rest of GAS. */
extern void md_assemble (char *op_str);
extern void md_end (void);
extern void md_begin (void);
#define TC_FORCE_RELOCATION(fixp) nios2_force_relocation (fixp)
extern int nios2_force_relocation (struct fix *);
#define tc_fix_adjustable(fixp) nios2_fix_adjustable (fixp)
extern int nios2_fix_adjustable (struct fix *);
#define tc_frob_label(lab) nios2_frob_label (lab)
extern void nios2_frob_label (symbolS *);
#define tc_frob_symbol(symp, punt) punt = nios2_frob_symbol (symp) ? 1 : punt
extern int nios2_frob_symbol (symbolS * symp);
#define md_cons_align(nbytes) nios2_cons_align (nbytes)
extern void nios2_cons_align (int);
extern void md_convert_frag (bfd * headers, segT sec, fragS * fragP);
/* When relaxing, we need to generate relocations for alignment
directives. */
#define HANDLE_ALIGN(frag) nios2_handle_align (frag)
extern void nios2_handle_align (fragS *);
#define md_relax_frag nios2_relax_frag
extern long nios2_relax_frag (segT segment, fragS * fragP, long stretch);
#ifdef OBJ_ELF
#define ELF_TC_SPECIAL_SECTIONS \
{ ".sdata", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL }, \
{ ".sbss", SHT_NOBITS, SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL }, \
{ ".lit4", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL }, \
{ ".lit8", SHT_PROGBITS, SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL },
/* Processor-specific section directives. */
#define md_elf_section_letter nios2_elf_section_letter
extern int nios2_elf_section_letter (int, char **);
#define md_elf_section_flags nios2_elf_section_flags
extern flagword nios2_elf_section_flags (flagword, int, int);
#endif
#define GLOBAL_OFFSET_TABLE_NAME "_GLOBAL_OFFSET_TABLE_"
#define DIFF_EXPR_OK
/* Nios2 ABI doesn't have 32-bit PCREL relocation, and, as relocations for
CFI information will be in section other than .text, we can't use PC-biased
relocs. */
#define CFI_DIFF_EXPR_OK 0
#define TC_PARSE_CONS_EXPRESSION(EXP, NBYTES) nios2_cons (EXP, NBYTES)
extern void nios2_cons (expressionS *exp, int size);
#define TC_CONS_FIX_NEW nios2_cons_fix_new
extern void nios2_cons_fix_new (struct frag *frag, int where,
unsigned int nbytes, struct expressionS *exp);
/* We want .cfi_* pseudo-ops for generating unwind info. */
#define TARGET_USE_CFIPOP 1
#define DWARF2_DEFAULT_RETURN_COLUMN 31
#define DWARF2_CIE_DATA_ALIGNMENT (-4)
#define tc_regname_to_dw2regnum nios2_regname_to_dw2regnum
extern int nios2_regname_to_dw2regnum (char *regname);
#define tc_cfi_frame_initial_instructions nios2_frame_initial_instructions
extern void nios2_frame_initial_instructions (void);
#endif /* TC_NIOS2 */

View file

@ -350,6 +350,8 @@ case ${generic_target} in
msp430-*-*) fmt=elf ;;
nios2*-linux*) fmt=elf em=linux ;;
ns32k-pc532-mach*) fmt=aout em=pc532mach ;;
ns32k-pc532-ux*) fmt=aout em=pc532mach ;;
ns32k-pc532-lites*) fmt=aout em=nbsd532 ;;

View file

@ -74,6 +74,7 @@ CPU_DOCS = \
c-mmix.texi \
c-mt.texi \
c-msp430.texi \
c-nios2.texi \
c-ns32k.texi \
c-pdp11.texi \
c-pj.texi \

View file

@ -316,6 +316,7 @@ CPU_DOCS = \
c-mmix.texi \
c-mt.texi \
c-msp430.texi \
c-nios2.texi \
c-ns32k.texi \
c-pdp11.texi \
c-pj.texi \
@ -410,17 +411,17 @@ as.info: as.texinfo $(as_TEXINFOS)
fi; \
rm -rf $$backupdir; exit $$rc
as.dvi: as.texinfo $(as_TEXINFOS)
as.dvi: as.texinfo $(as_TEXINFOS)
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2DVI) -o $@ `test -f 'as.texinfo' || echo '$(srcdir)/'`as.texinfo
as.pdf: as.texinfo $(as_TEXINFOS)
as.pdf: as.texinfo $(as_TEXINFOS)
TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
$(TEXI2PDF) -o $@ `test -f 'as.texinfo' || echo '$(srcdir)/'`as.texinfo
as.html: as.texinfo $(as_TEXINFOS)
as.html: as.texinfo $(as_TEXINFOS)
rm -rf $(@:.html=.htp)
if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
-o $(@:.html=.htp) `test -f 'as.texinfo' || echo '$(srcdir)/'`as.texinfo; \

View file

@ -58,6 +58,7 @@
@set MMIX
@set MS1
@set MSP430
@set NIOSII
@set NS32K
@set PDP11
@set PJ

View file

@ -431,6 +431,12 @@ gcc(1), ld(1), and the Info entries for @file{binutils} and @file{ld}.
[@b{--no-expand}] [@b{--no-merge-gregs}] [@b{-x}]
[@b{--linker-allocated-gregs}]
@end ifset
@ifset NIOSII
@emph{Target Nios II options:}
[@b{-relax-all}] [@b{-relax-section}] [@b{-no-relax}]
[@b{-EB}] [@b{-EL}]
@end ifset
@ifset PDP11
@emph{Target PDP11 options:}
@ -1028,6 +1034,24 @@ unit coprocessor. The default is to assume an MMU for 68020 and up.
@end table
@end ifset
@ifset NIOSII
@ifclear man
@xref{Nios II Options}, for the options available when @value{AS} is configured
for an Altera Nios II processor.
@end ifclear
@ifset man
@c man begin OPTIONS
The following options are available when @value{AS} is configured for an
Altera Nios II processor.
@c man end
@c man begin INCLUDE
@include c-nios2.texi
@c ended inside the included file
@end ifset
@end ifset
@ifset PDP11
For details about the PDP-11 machine dependent features options,
@ -7059,6 +7083,9 @@ subject, see the hardware manufacturer's manual.
@ifset MSP430
* MSP430-Dependent:: MSP430 Dependent Features
@end ifset
@ifset NIOSII
* NiosII-Dependent:: Altera Nios II Dependent Features
@end ifset
@ifset NS32K
* NS32K-Dependent:: NS32K Dependent Features
@end ifset
@ -7270,6 +7297,10 @@ family.
@include c-msp430.texi
@end ifset
@ifset NIOSII
@include c-nios2.texi
@end ifset
@ifset NS32K
@include c-ns32k.texi
@end ifset

249
gas/doc/c-nios2.texi Normal file
View file

@ -0,0 +1,249 @@
@c Copyright 2012, 2013 Free Software Foundation, Inc.
@c This is part of the GAS manual.
@c For copying conditions, see the file as.texinfo.
@c man end
@ifset GENERIC
@page
@node NiosII-Dependent
@chapter Nios II Dependent Features
@end ifset
@ifclear GENERIC
@node Machine Dependencies
@chapter Nios II Dependent Features
@end ifclear
@cindex Altera Nios II support
@cindex Nios support
@cindex Nios II support
@menu
* Nios II Options:: Options
* Nios II Syntax:: Syntax
* Nios II Relocations:: Relocations
* Nios II Directives:: Nios II Machine Directives
* Nios II Opcodes:: Opcodes
@end menu
@node Nios II Options
@section Options
@cindex Nios II options
@cindex options for Nios II
@c man begin OPTIONS
@table @gcctabopt
@cindex @code{relax-section} command line option, Nios II
@item -relax-section
Replace identified out-of-range branches with PC-relative @code{jmp}
sequences when possible. The generated code sequences are suitable
for use in position-independent code, but there is a practical limit
on the extended branch range because of the length of the sequences.
This option is the default.
@cindex @code{relax-all} command line option, Nios II
@item -relax-all
Replace branch instructions not determinable to be in range
and all call instructions with @code{jmp} and @code{callr} sequences
(respectively). This option generates absolute relocations against the
target symbols and is not appropriate for position-independent code.
@cindex @code{no-relax} command line option, Nios II
@item -no-relax
Do not replace any branches or calls.
@cindex @code{EB} command line option, Nios II
@item -EB
Generate big-endian output.
@cindex @code{EL} command line option, Nios II
@item -EL
Generate little-endian output. This is the default.
@end table
@c man end
@node Nios II Syntax
@section Syntax
@menu
* Nios II Chars:: Special Characters
@end menu
@node Nios II Chars
@subsection Special Characters
@cindex line comment character, Nios II
@cindex Nios II line comment character
@cindex line separator character, Nios II
@cindex Nios II line separator character
@samp{#} is the line comment character.
@samp{;} is the line separator character.
@node Nios II Relocations
@section Nios II Machine Relocations
@cindex machine relocations, Nios II
@cindex Nios II machine relocations
@table @code
@cindex @code{hiadj} directive, Nios II
@item %hiadj(@var{expression})
Extract the upper 16 bits of @var{expression} and add
one if the 15th bit is set.
The value of @code{%hiadj(@var{expression})} is:
@smallexample
((@var{expression} >> 16) & 0xffff) + ((@var{expression} >> 15) & 0x01)
@end smallexample
The @code{%hiadj} relocation is intended to be used with
the @code{addi}, @code{ld} or @code{st} instructions
along with a @code{%lo}, in order to load a 32-bit constant.
@smallexample
movhi r2, %hiadj(symbol)
addi r2, r2, %lo(symbol)
@end smallexample
@cindex @code{hi} directive, Nios II
@item %hi(@var{expression})
Extract the upper 16 bits of @var{expression}.
@cindex @code{lo} directive, Nios II
@item %lo(@var{expression})
Extract the lower 16 bits of @var{expression}.
@cindex @code{gprel} directive, Nios II
@item %gprel(@var{expression})
Subtract the value of the symbol @code{_gp} from
@var{expression}.
The intention of the @code{%gprel} relocation is
to have a fast small area of memory which only
takes a 16-bit immediate to access.
@smallexample
.section .sdata
fastint:
.int 123
.section .text
ldw r4, %gprel(fastint)(gp)
@end smallexample
@cindex @code{call} directive, Nios II
@cindex @code{got} directive, Nios II
@cindex @code{gotoff} directive, Nios II
@cindex @code{gotoff_lo} directive, Nios II
@cindex @code{gotoff_hiadj} directive, Nios II
@cindex @code{tls_gd} directive, Nios II
@cindex @code{tls_ie} directive, Nios II
@cindex @code{tls_le} directive, Nios II
@cindex @code{tls_ldm} directive, Nios II
@cindex @code{tls_ldo} directive, Nios II
@item %call(@var{expression})
@itemx %got(@var{expression})
@itemx %gotoff(@var{expression})
@itemx %gotoff_lo(@var{expression})
@itemx %gotoff_hiadj(@var{expression})
@itemx %tls_gd(@var{expression})
@itemx %tls_ie(@var{expression})
@itemx %tls_le(@var{expression})
@itemx %tls_ldm(@var{expression})
@itemx %tls_ldo(@var{expression})
These relocations support the ABI for Linux Systems documented in the
@cite{Nios II Processor Reference Handbook}.
@end table
@node Nios II Directives
@section Nios II Machine Directives
@cindex machine directives, Nios II
@cindex Nios II machine directives
@table @code
@cindex @code{align} directive, Nios II
@item .align @var{expression} [, @var{expression}]
This is the generic @code{.align} directive, however
this aligns to a power of two.
@cindex @code{half} directive, Nios II
@item .half @var{expression}
Create an aligned constant 2 bytes in size.
@cindex @code{word} directive, Nios II
@item .word @var{expression}
Create an aligned constant 4 bytes in size.
@cindex @code{dword} directive, Nios II
@item .dword @var{expression}
Create an aligned constant 8 bytes in size.
@cindex @code{2byte} directive, Nios II
@item .2byte @var{expression}
Create an unaligned constant 2 bytes in size.
@cindex @code{4byte} directive, Nios II
@item .4byte @var{expression}
Create an unaligned constant 4 bytes in size.
@cindex @code{8byte} directive, Nios II
@item .8byte @var{expression}
Create an unaligned constant 8 bytes in size.
@cindex @code{16byte} directive, Nios II
@item .16byte @var{expression}
Create an unaligned constant 16 bytes in size.
@cindex @code{set noat} directive, Nios II
@item .set noat
Allows assembly code to use @code{at} register without
warning. Macro or relaxation expansions
generate warnings.
@cindex @code{set at} directive, Nios II
@item .set at
Assembly code using @code{at} register generates
warnings, and macro expansion and relaxation are
enabled.
@cindex @code{set nobreak} directive, Nios II
@item .set nobreak
Allows assembly code to use @code{ba} and @code{bt}
registers without warning.
@cindex @code{set break} directive, Nios II
@item .set break
Turns warnings back on for using @code{ba} and @code{bt}
registers.
@cindex @code{set norelax} directive, Nios II
@item .set norelax
Do not replace any branches or calls.
@cindex @code{set relaxsection} directive, Nios II
@item .set relaxsection
Replace identified out-of-range branches with
@code{jmp} sequences (default).
@cindex @code{set relaxall} directive, Nios II
@item .set relaxsection
Replace all branch and call instructions with
@code{jmp} and @code{callr} sequences.
@cindex @code{set} directive, Nios II
@item .set @dots{}
All other @code{.set} are the normal use.
@end table
@node Nios II Opcodes
@section Opcodes
@cindex Nios II opcodes
@cindex opcodes for Nios II
@code{@value{AS}} implements all the standard Nios II opcodes documented in the
@cite{Nios II Processor Reference Handbook}, including the assembler
pseudo-instructions.

View file

@ -1,3 +1,94 @@
2013-02-06 Sandra Loosemore <sandra@codesourcery.com>
Andrew Jenner <andrew@codesourcery.com>
Based on patches from Altera Corporation.
* gas/nios2/add.d: New.
* gas/nios2/add.s: New.
* gas/nios2/align_fill.d: New.
* gas/nios2/align_fill.s: New.
* gas/nios2/align_text.d: New.
* gas/nios2/align_text.s: New.
* gas/nios2/and.d: New.
* gas/nios2/and.s: New.
* gas/nios2/branch.d: New.
* gas/nios2/branch.s: New.
* gas/nios2/break.d: New.
* gas/nios2/break.s: New.
* gas/nios2/bret.d: New.
* gas/nios2/bret.s: New.
* gas/nios2/cache.d: New.
* gas/nios2/cache.s: New.
* gas/nios2/call26.d: New.
* gas/nios2/call26.s: New.
* gas/nios2/call.d: New.
* gas/nios2/call.s: New.
* gas/nios2/cmp.d: New.
* gas/nios2/cmp.s: New.
* gas/nios2/comments.d: New.
* gas/nios2/comments.s: New.
* gas/nios2/complex.d: New.
* gas/nios2/complex.s: New.
* gas/nios2/ctl.d: New.
* gas/nios2/ctl.s: New.
* gas/nios2/custom.d: New.
* gas/nios2/custom.s: New.
* gas/nios2/etbt.d: New.
* gas/nios2/etbt.s: New.
* gas/nios2/flushda.d: New.
* gas/nios2/flushda.s: New.
* gas/nios2/illegal.l: New.
* gas/nios2/illegal.s: New.
* gas/nios2/jmp.d: New.
* gas/nios2/jmp.s: New.
* gas/nios2/ldb.d: New.
* gas/nios2/ldb.s: New.
* gas/nios2/ldh.d: New.
* gas/nios2/ldh.s: New.
* gas/nios2/ldw.d: New.
* gas/nios2/ldw.s: New.
* gas/nios2/lineseparator.d: New.
* gas/nios2/lineseparator.s: New.
* gas/nios2/mov.d: New.
* gas/nios2/movia.d: New.
* gas/nios2/movia.s: New.
* gas/nios2/movi.d: New.
* gas/nios2/movi.s: New.
* gas/nios2/mov.s: New.
* gas/nios2/mul.d: New.
* gas/nios2/mul.s: New.
* gas/nios2/nios2.exp: New.
* gas/nios2/nor.d: New.
* gas/nios2/nor.s: New.
* gas/nios2/or.d: New.
* gas/nios2/or.s: New.
* gas/nios2/ret.d: New.
* gas/nios2/ret.s: New.
* gas/nios2/rol.d: New.
* gas/nios2/rol.s: New.
* gas/nios2/rotate.d: New.
* gas/nios2/rotate.s: New.
* gas/nios2/stb.d: New.
* gas/nios2/stb.s: New.
* gas/nios2/sth.d: New.
* gas/nios2/sth.s: New.
* gas/nios2/stw.d: New.
* gas/nios2/stw.s: New.
* gas/nios2/sub.d: New.
* gas/nios2/sub.s: New.
* gas/nios2/sync.d: New.
* gas/nios2/sync.s: New.
* gas/nios2/trap.d: New.
* gas/nios2/trap.s: New.
* gas/nios2/tret.d: New.
* gas/nios2/tret.s: New.
* gas/nios2/warn_noat.l: New.
* gas/nios2/warn_noat.s: New.
* gas/nios2/warn_nobreak.l: New.
* gas/nios2/warn_nobreak.s: New.
* gas/nios2/xor.d: New.
* gas/nios2/xor.s: New.
2013-01-31 Tristan Gingold <gingold@adacore.com>
* gas/ppc/test1xcoff32.d: Updated.

View file

@ -0,0 +1,16 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 add
# Test the add instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> add r4,r4,r4
0+0004 <[^>]*> addi r4,r4,32767
0+0008 <[^>]*> addi r4,r4,-32768
0+000c <[^>]*> addi r4,r4,0
0+0010 <[^>]*> addi r4,r4,-1
0+0014 <[^>]*> addi r4,r4,-1
0+0018 <[^>]*> addi r4,r4,13398
0+001c <[^>]*> nop

View file

@ -0,0 +1,13 @@
# Source file used to test the add and addi instructions.
foo:
add r4,r4,r4
addi r4,r4,0x7fff
addi r4,r4,-0x8000
addi r4,r4,0x0
addi r4,r4,-0x01
subi r4,r4,0x01
addi r4,r4,0x3456
# should disassemble to add r0,0,r0
nop

View file

@ -0,0 +1,23 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 align_fill
# Test the and macro.
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> addi sp,sp,-8
0+0004 <[^>]*> stw fp,4\(sp\)
0+0008 <[^>]*> mov fp,sp
0+000c <[^>]*> mov r3,zero
0+0010 <[^>]*> nop
0+0014 <[^>]*> nop
0+0018 <[^>]*> nop
0+001c <[^>]*> nop
0+0020 <[^>]*> addi r3,r3,1
0+0024 <[^>]*> cmplti r2,r3,100
0+0028 <[^>]*> bne r2,zero,0+0020 <[^>*]*>
0+002c <[^>]*> ldw fp,4\(sp\)
0+0030 <[^>]*> addi sp,sp,8
0+0034 <[^>]*> ret
...

View file

@ -0,0 +1,20 @@
.file "a.c"
.section .text
.align 3
.global x
.type x, @function
x:
addi sp, sp, -8
stw fp, 4(sp)
mov fp, sp
mov r3, zero
.align 5
.L6:
addi r3, r3, 1
cmplti r2, r3, 100
bne r2, zero, .L6
ldw fp, 4(sp)
addi sp, sp, 8
ret
.size x, .-x
.ident "GCC: (GNU) 3.3.3 (Altera Nios II 1.0 b302)"

View file

@ -0,0 +1,22 @@
#objdump: -dr
#name: NIOS2 align_test
# Test alignment in text sections.
.*: +file format elf32-littlenios2
Disassembly of section .text:
00000000 <label-0x20>:
0: 00000000 call 0 <label-0x20>
4: 0001883a nop
8: 0001883a nop
c: 0001883a nop
10: 0001883a nop
14: 0001883a nop
18: 0001883a nop
1c: 0001883a nop
00000020 <label>:
20: 0001883a nop
00000024 <label2>:
...

View file

@ -0,0 +1,15 @@
.asciz "" # empty string
.align 2
nop
nop
label:
.align 5
nop
label2:
.section mysection
.align 2

View file

@ -0,0 +1,17 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 and
# Test the and macro.
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> and r4,r4,r4
0+0004 <[^>]*> andi r4,r4,32767
0+0008 <[^>]*> andi r4,r4,32768
0+000c <[^>]*> andi r4,r4,65535
0+0010 <[^>]*> andi r4,r4,0
0+0014 <[^>]*> andhi r4,r4,32767
0+0018 <[^>]*> andhi r4,r4,32768
0+001c <[^>]*> andhi r4,r4,65535
0+0020 <[^>]*> andhi r4,r4,0

View file

@ -0,0 +1,13 @@
# Source file used to test the and, andhi and andi instructions
foo:
and r4,r4,r4
andi r4,r4,0x7fff
andi r4,r4,0x8000
andi r4,r4,0xffff
andi r4,r4,0x0
andhi r4,r4,0x7fff
andhi r4,r4,0x8000
andhi r4,r4,0xffff
andhi r4,r4,0x0

View file

@ -0,0 +1,21 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 branch
# Test the branch instructions.
dump.o: file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> beq r4,r5,00000004 <text_label\+0x4>
[ ]*0: R_NIOS2_PCREL16 text_label
0+0004 <[^>]*> bge r4,r5,00000008 <text_label\+0x8>
[ ]*4: R_NIOS2_PCREL16 text_label
0+0008 <[^>]*> bgeu r4,r5,0000000c <text_label\+0xc>
[ ]*8: R_NIOS2_PCREL16 text_label
0+000c <[^>]*> blt r4,r5,00000010 <text_label\+0x10>
[ ]*c: R_NIOS2_PCREL16 text_label
0+0010 <[^>]*> bltu r4,r5,00000014 <text_label\+0x14>
[ ]*10: R_NIOS2_PCREL16 text_label
0+0014 <[^>]*> bne r4,r5,00000018 <text_label\+0x18>
[ ]*14: R_NIOS2_PCREL16 text_label
0+0018 <[^>]*> br 0000001c <text_label\+0x1c>
[ ]*18: R_NIOS2_PCREL16 external_label

View file

@ -0,0 +1,15 @@
# Source file used to test the beq macro.
.globl text_label
.text
.set norelax
text_label:
beq r4,r5,text_label
bge r4,r5,text_label
bgeu r4,r5,text_label
blt r4,r5,text_label
bltu r4,r5,text_label
bne r4,r5,text_label
# Branch to an external label.
br external_label

View file

@ -0,0 +1,12 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 break
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> break 0
0+0004 <[^>]*> break 0
0+0008 <[^>]*> break 31
0+000c <[^>]*> break 14

View file

@ -0,0 +1,8 @@
# Source file used to test the 20-bit break instructions
foo:
break
break 0
break 31
break 14

View file

@ -0,0 +1,8 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 bret
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> bret

View file

@ -0,0 +1,5 @@
# Source file used to test the bret instructions
foo:
bret

View file

@ -0,0 +1,17 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 cache
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> flushd -32768\(r6\)
0+0004 <[^>]*> flushd 32767\(r6\)
0+0008 <[^>]*> flushd 0\(r6\)
0+000c <[^>]*> flushd -1\(r6\)
0+0010 <[^>]*> flushd 0\(r6\)
[ ]*10: R_NIOS2_S16 .text
0+0014 <[^>]*> flushd 0\(r6\)
[ ]*14: R_NIOS2_S16 external
0+0018 <[^>]*> flushi r2
0+001c <[^>]*> flushp

View file

@ -0,0 +1,21 @@
# Source file used to test the cache instruction
foo:
flushd -0x8000(r6)
flushd 0x7fff(r6)
flushd 0x0(r6)
flushd -0x0001(r6)
# use symbol for offset
flushd foo(r6)
# use external symbol
.global external
flushd external(r6)
# flushi
flushi r2
#flushp
flushp

View file

@ -0,0 +1,11 @@
# objdump: -dr --prefix-addresses
#name: NIOS2 call
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> call 00000000 <foo>
[ ]*0: R_NIOS2_CALL26 .text\+0xc
0+0004 <[^>]*> callr r10
0+0008 <[^>]*> call 00000000 <foo>
[ ]*8: R_NIOS2_CALL26 external

View file

@ -0,0 +1,13 @@
# Source file used to test the call and callr instructions
.text
.set norelax
foo:
call func1
callr r10
# use external symbol
.global external
call external
func1:

View file

@ -0,0 +1,76 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 nios2-reloc-r-nios2-call26
# Test the branch instructions.
.*: +file format elf32-littlenios2
Disassembly of section .text:
[ ]*\.\.\.
[ ]*0: R_NIOS2_CALL26 .text\+0x100
[ ]*4: R_NIOS2_CALL26 globalfunc
0+0008 <[^>]*> nop
0+000c <[^>]*> nop
0+0010 <[^>]*> nop
0+0014 <[^>]*> nop
0+0018 <[^>]*> nop
0+001c <[^>]*> nop
0+0020 <[^>]*> nop
0+0024 <[^>]*> nop
0+0028 <[^>]*> nop
0+002c <[^>]*> nop
0+0030 <[^>]*> nop
0+0034 <[^>]*> nop
0+0038 <[^>]*> nop
0+003c <[^>]*> nop
0+0040 <[^>]*> nop
0+0044 <[^>]*> nop
0+0048 <[^>]*> nop
0+004c <[^>]*> nop
0+0050 <[^>]*> nop
0+0054 <[^>]*> nop
0+0058 <[^>]*> nop
0+005c <[^>]*> nop
0+0060 <[^>]*> nop
0+0064 <[^>]*> nop
0+0068 <[^>]*> nop
0+006c <[^>]*> nop
0+0070 <[^>]*> nop
0+0074 <[^>]*> nop
0+0078 <[^>]*> nop
0+007c <[^>]*> nop
0+0080 <[^>]*> nop
0+0084 <[^>]*> nop
0+0088 <[^>]*> nop
0+008c <[^>]*> nop
0+0090 <[^>]*> nop
0+0094 <[^>]*> nop
0+0098 <[^>]*> nop
0+009c <[^>]*> nop
0+00a0 <[^>]*> nop
0+00a4 <[^>]*> nop
0+00a8 <[^>]*> nop
0+00ac <[^>]*> nop
0+00b0 <[^>]*> nop
0+00b4 <[^>]*> nop
0+00b8 <[^>]*> nop
0+00bc <[^>]*> nop
0+00c0 <[^>]*> nop
0+00c4 <[^>]*> nop
0+00c8 <[^>]*> nop
0+00cc <[^>]*> nop
0+00d0 <[^>]*> nop
0+00d4 <[^>]*> nop
0+00d8 <[^>]*> nop
0+00dc <[^>]*> nop
0+00e0 <[^>]*> nop
0+00e4 <[^>]*> nop
0+00e8 <[^>]*> nop
0+00ec <[^>]*> nop
0+00f0 <[^>]*> nop
0+00f4 <[^>]*> nop
0+00f8 <[^>]*> nop
0+00fc <[^>]*> nop
0+0100 <[^>]*> nop
...

View file

@ -0,0 +1,12 @@
# Test for Nios II 32-bit relocations
.global globalfunc
.text
.set norelax
start:
call localfunc
call globalfunc
.align 8
localfunc:
nop

View file

@ -0,0 +1,24 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 cmp
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> cmpeq r11,r2,r3
0+0004 <[^>]*> cmpge r11,r2,r3
0+0008 <[^>]*> cmpgeu r11,r2,r3
0+000c <[^>]*> cmplt r11,r2,r3
0+0010 <[^>]*> cmpltu r11,r2,r3
0+0014 <[^>]*> cmpne r11,r2,r3
0+0018 <[^>]*> cmpgei r11,r2,0
[ ]*18: R_NIOS2_S16 value
0+001c <[^>]*> cmpgeui r11,r2,0
[ ]*1c: R_NIOS2_U16 value\+0x200
0+0020 <[^>]*> cmplti r11,r2,0
[ ]*20: R_NIOS2_S16 value
0+0024 <[^>]*> cmpltui r11,r2,0
[ ]*24: R_NIOS2_U16 value\+0x200
0+0028 <[^>]*> cmpgei r11,r2,32767
0+002c <[^>]*> cmpgeui r11,r2,32768
0+0030 <[^>]*> cmplti r11,r2,-32768
0+0034 <[^>]*> cmpltui r11,r2,65535

View file

@ -0,0 +1,22 @@
# Source file used to test the compare instructions
foo:
cmpeq r11,r2,r3
cmpge r11,r2,r3
cmpgeu r11,r2,r3
cmplt r11,r2,r3
cmpltu r11,r2,r3
cmpne r11,r2,r3
# test that cmp generates relocations correctly
cmpgei r11,r2,value
cmpgeui r11,r2,value+0x200
cmplti r11,r2,value
cmpltui r11,r2,value+0x200
cmpgei r11,r2,0x7fff
cmpgeui r11,r2,0x8000
cmplti r11,r2,-0x8000
cmpltui r11,r2,0xFFFF
.global value

View file

@ -0,0 +1,26 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 comments
# Test the add instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> br 0000001c <start>
0+0004 <[^>]*> br 00000008 <abort>
0+0008 <[^>]*> movui r3,0
0+000c <[^>]*> movui r2,1
0+0010 <[^>]*> movui r3,0
0+0014 <[^>]*> movui r2,0
0+0018 <[^>]*> br 00000044 <exit>
0+001c <[^>]*> addi r2,r2,-4
0+0020 <[^>]*> movui r11,1
0+0024 <[^>]*> movui r5,0
0+0028 <[^>]*> movui r6,0
0+002c <[^>]*> br 00000030 <ldst>
0+0030 <[^>]*> movui r2,61452
0+0034 <[^>]*> movui r20,64206
0+0038 <[^>]*> stw r20,0\(r2\)
0+003c <[^>]*> ldw r21,0\(r2\)
0+0040 <[^>]*> br 00000010 <end>
0+0044 <[^>]*> br 00000044 <exit>

View file

@ -0,0 +1,28 @@
.set norelax
_main: br start
trap:
br abort
.globl _main
abort: movui r3, 0x0
movui r2, 0x1
end: movui r3, 0x0
movui r2, 0x0
br exit
start:
addi r2, r2, -4 # test for ve numbers
movui r11, 0x1
ori r5, r0, %lo(0x0) # r5 = 0x0
ori r6, r0, %lo(0x0) # r6 = 0x0
br ldst
ldst:
movui r2, 0xF00C
movui r20, 0xFACE
stw r20,(r2)
ldw r21, (r2)
br end
exit: br exit

View file

@ -0,0 +1,12 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 complex
# Test complex expression parsing
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> ldw r2,-1\(r3\)
0+0004 <[^>]*> ldw r2,1\(r3\)
0+0008 <[^>]*> ldw r2,0\(r3\)
8: R_NIOS2_S16 stack_top-0x1

View file

@ -0,0 +1,5 @@
foo:
ldw r2, (2-3)(r3)
ldw r2, 2 + (2-3)(r3)
ldw r2, 2 + (stack_top-3)(r3)

View file

@ -0,0 +1,20 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 ctl
# Test the ctl instructions
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> rdctl r8,ctl31
0+0004 <[^>]*> rdctl r8,ctl30
0+0008 <[^>]*> rdctl r8,ctl29
0+000c <[^>]*> rdctl r8,status
0+0010 <[^>]*> rdctl r8,bstatus
0+0014 <[^>]*> rdctl r8,estatus
0+0018 <[^>]*> wrctl ctl31,r8
0+001c <[^>]*> wrctl ctl30,r8
0+0020 <[^>]*> wrctl ctl29,r8
0+0024 <[^>]*> wrctl status,r8
0+0028 <[^>]*> wrctl bstatus,r8
0+002c <[^>]*> wrctl estatus,r8

View file

@ -0,0 +1,18 @@
# Source file used to test the nor instruction
foo:
rdctl r8,ctl31
rdctl r8,ctl30
rdctl r8,ctl29
rdctl r8,status
rdctl r8,bstatus
rdctl r8,estatus
wrctl ctl31,r8
wrctl ctl30,r8
wrctl ctl29,r8
wrctl status,r8
wrctl bstatus,r8
wrctl estatus,r8

View file

@ -0,0 +1,13 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 custom
# Test the custom instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> custom 0,r11,r2,r3
0+0004 <[^>]*> custom 255,r11,r2,r3
0+0008 <[^>]*> custom 150,c1,r2,r3
0+000c <[^>]*> custom 24,c1,c2,r3
0+0010 <[^>]*> custom 56,c1,c2,c3

View file

@ -0,0 +1,8 @@
# test progam for assembling user instructions
foo:
custom 0, r11, r2, r3
custom 255, r11, r2, r3
custom 150, c1, r2, r3
custom 0x18, c1, c2, r3
custom 070, c1, c2, c3

View file

@ -0,0 +1,10 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 etbt
# Test the et, bt registers
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> add et,bt,r6
0+0004 <[^>]*> add et,bt,r6

View file

@ -0,0 +1,4 @@
.set nobreak
foo:
add r24, r25, r6
add et, bt, r6

View file

@ -0,0 +1,10 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 flushda
# Test the jmp instruction.
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> flushda 12\(r2\)

View file

@ -0,0 +1,6 @@
# Source file used to test the flushda instruction.
.text
.set nobreak
foo:
flushda 12(r2)

View file

@ -0,0 +1,14 @@
.*illegal.s: Assembler messages:
.*illegal.s:5: Error: unknown register r56
.*illegal.s:8: Error: expecting \( near 0x1000
.*illegal.s:8: Error: missing argument
.*illegal.s:9: Error: expecting \) near r5
.*illegal.s:10: Error: expecting \( near 0x1000r5\)
.*illegal.s:10: Error: missing argument
.*illegal.s:11: Error: expecting \( near 0x1000,r5
.*illegal.s:11: Error: missing argument
.*illegal.s:12: Error: unknown register 0x1000
.*illegal.s:14: Error: unrecognised instruction fop
.*illegal.s:16: Error: too many arguments
.*illegal.s:17: Error: too many arguments
.*illegal.s:17: Error: unknown register r2,r4

View file

@ -0,0 +1,17 @@
# Source file used to test illegal operands.
foo:
# Illegal registers
add r3,r4,r56
add r4,r0,r2
# Illegal syntax
ldw r4,0x1000
ldw r4,0x1000(r5
ldw r4,0x1000r5)
ldw r4,0x1000,r5
ldw r4,(0x1000)r5
# Illegal opcodes
fop r3,r4,r5
# Extra operands
nop Crapola
add r2, r2, r2, r4

View file

@ -0,0 +1,10 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 jmp
# Test the jmp instruction.
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> jmp bt

View file

@ -0,0 +1,6 @@
# Source file used to test the jmp instruction.
.text
.set nobreak
foo:
jmp r25

View file

@ -0,0 +1,196 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 ldb
# Test the ld instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> ldb r4,0\(zero\)
0+0004 <[^>]*> ldb r4,4\(zero\)
0+0008 <[^>]*> ldb r4,32764\(zero\)
0+000c <[^>]*> ldb r4,-32768\(zero\)
0+0010 <[^>]*> ldb r4,0\(r5\)
0+0014 <[^>]*> ldb r4,4\(r5\)
0+0018 <[^>]*> ldb r4,32764\(r5\)
0+001c <[^>]*> ldb r4,-32768\(r5\)
0+0020 <[^>]*> ldb r4,0\(zero\)
[ ]*20: R_NIOS2_S16 .data
0+0024 <[^>]*> ldb r4,0\(zero\)
[ ]*24: R_NIOS2_S16 big_external_data_label
0+0028 <[^>]*> ldb r4,0\(zero\)
[ ]*28: R_NIOS2_S16 small_external_data_label
0+002c <[^>]*> ldb r4,0\(zero\)
[ ]*2c: R_NIOS2_S16 big_external_common
0+0030 <[^>]*> ldb r4,0\(zero\)
[ ]*30: R_NIOS2_S16 small_external_common
0+0034 <[^>]*> ldb r4,0\(zero\)
[ ]*34: R_NIOS2_S16 .bss
0+0038 <[^>]*> ldb r4,0\(zero\)
[ ]*38: R_NIOS2_S16 .bss\+0x4000
0+003c <[^>]*> ldb r4,0\(zero\)
[ ]*3c: R_NIOS2_S16 .data\+0x4
0+0040 <[^>]*> ldb r4,0\(zero\)
[ ]*40: R_NIOS2_S16 big_external_data_label\+0x4
0+0044 <[^>]*> ldb r4,0\(zero\)
[ ]*44: R_NIOS2_S16 small_external_data_label\+0x4
0+0048 <[^>]*> ldb r4,0\(zero\)
[ ]*48: R_NIOS2_S16 big_external_common\+0x4
0+004c <[^>]*> ldb r4,0\(zero\)
[ ]*4c: R_NIOS2_S16 small_external_common\+0x4
0+0050 <[^>]*> ldb r4,0\(zero\)
[ ]*50: R_NIOS2_S16 .bss\+0x4
0+0054 <[^>]*> ldb r4,0\(zero\)
[ ]*54: R_NIOS2_S16 .bss\+0x4004
0+0058 <[^>]*> ldb r4,0\(zero\)
[ ]*58: R_NIOS2_S16 .data-0x8000
0+005c <[^>]*> ldb r4,0\(zero\)
[ ]*5c: R_NIOS2_S16 big_external_data_label-0x8000
0+0060 <[^>]*> ldb r4,0\(zero\)
[ ]*60: R_NIOS2_S16 small_external_data_label-0x8000
0+0064 <[^>]*> ldb r4,0\(zero\)
[ ]*64: R_NIOS2_S16 big_external_common-0x8000
0+0068 <[^>]*> ldb r4,0\(zero\)
[ ]*68: R_NIOS2_S16 small_external_common-0x8000
0+006c <[^>]*> ldb r4,0\(zero\)
[ ]*6c: R_NIOS2_S16 .bss-0x8000
0+0070 <[^>]*> ldb r4,0\(zero\)
[ ]*70: R_NIOS2_S16 .bss-0x4000
0+0074 <[^>]*> ldb r4,0\(zero\)
[ ]*74: R_NIOS2_S16 .data\+0x10000
0+0078 <[^>]*> ldb r4,0\(r5\)
[ ]*78: R_NIOS2_S16 .data
0+007c <[^>]*> ldb r4,0\(r5\)
[ ]*7c: R_NIOS2_S16 big_external_data_label
0+0080 <[^>]*> ldb r4,0\(r5\)
[ ]*80: R_NIOS2_S16 small_external_data_label
0+0084 <[^>]*> ldb r4,0\(r5\)
[ ]*84: R_NIOS2_S16 big_external_common
0+0088 <[^>]*> ldb r4,0\(r5\)
[ ]*88: R_NIOS2_S16 small_external_common
0+008c <[^>]*> ldb r4,0\(r5\)
[ ]*8c: R_NIOS2_S16 .bss
0+0090 <[^>]*> ldb r4,0\(r5\)
[ ]*90: R_NIOS2_S16 .bss\+0x4000
0+0094 <[^>]*> ldb r4,0\(r5\)
[ ]*94: R_NIOS2_S16 .data\+0x4
0+0098 <[^>]*> ldb r4,0\(r5\)
[ ]*98: R_NIOS2_S16 big_external_data_label\+0x4
0+009c <[^>]*> ldb r4,0\(r5\)
[ ]*9c: R_NIOS2_S16 small_external_data_label\+0x4
0+00a0 <[^>]*> ldb r4,0\(r5\)
[ ]*a0: R_NIOS2_S16 big_external_common\+0x4
0+00a4 <[^>]*> ldb r4,0\(r5\)
[ ]*a4: R_NIOS2_S16 small_external_common\+0x4
0+00a8 <[^>]*> ldb r4,0\(r5\)
[ ]*a8: R_NIOS2_S16 .bss\+0x4
0+00ac <[^>]*> ldb r4,0\(r5\)
[ ]*ac: R_NIOS2_S16 .bss\+0x4004
0+00b0 <[^>]*> ldb r4,0\(r5\)
[ ]*b0: R_NIOS2_S16 .data-0x8000
0+00b4 <[^>]*> ldb r4,0\(r5\)
[ ]*b4: R_NIOS2_S16 big_external_data_label-0x8000
0+00b8 <[^>]*> ldb r4,0\(r5\)
[ ]*b8: R_NIOS2_S16 small_external_data_label-0x8000
0+00bc <[^>]*> ldb r4,0\(r5\)
[ ]*bc: R_NIOS2_S16 big_external_common-0x8000
0+00c0 <[^>]*> ldb r4,0\(r5\)
[ ]*c0: R_NIOS2_S16 small_external_common-0x8000
0+00c4 <[^>]*> ldb r4,0\(r5\)
[ ]*c4: R_NIOS2_S16 .bss-0x8000
0+00c8 <[^>]*> ldb r4,0\(r5\)
[ ]*c8: R_NIOS2_S16 .bss-0x4000
0+00cc <[^>]*> ldbio r4,0\(zero\)
0+00d0 <[^>]*> ldbio r4,4\(zero\)
0+00d4 <[^>]*> ldbio r4,32764\(zero\)
0+00d8 <[^>]*> ldbio r4,-32768\(zero\)
0+00dc <[^>]*> ldbio r4,0\(r5\)
0+00e0 <[^>]*> ldbio r4,4\(r5\)
0+00e4 <[^>]*> ldbio r4,32764\(r5\)
0+00e8 <[^>]*> ldbio r4,-32768\(r5\)
0+00ec <[^>]*> ldbio r4,0\(zero\)
[ ]*ec: R_NIOS2_S16 .data
0+00f0 <[^>]*> ldbio r4,0\(zero\)
[ ]*f0: R_NIOS2_S16 big_external_data_label
0+00f4 <[^>]*> ldbio r4,0\(zero\)
[ ]*f4: R_NIOS2_S16 small_external_data_label
0+00f8 <[^>]*> ldbio r4,0\(zero\)
[ ]*f8: R_NIOS2_S16 big_external_common
0+00fc <[^>]*> ldbio r4,0\(zero\)
[ ]*fc: R_NIOS2_S16 small_external_common
0+0100 <[^>]*> ldbio r4,0\(zero\)
[ ]*100: R_NIOS2_S16 .bss
0+0104 <[^>]*> ldbio r4,0\(zero\)
[ ]*104: R_NIOS2_S16 .bss\+0x4000
0+0108 <[^>]*> ldbio r4,0\(zero\)
[ ]*108: R_NIOS2_S16 .data\+0x4
0+010c <[^>]*> ldbio r4,0\(zero\)
[ ]*10c: R_NIOS2_S16 big_external_data_label\+0x4
0+0110 <[^>]*> ldbio r4,0\(zero\)
[ ]*110: R_NIOS2_S16 small_external_data_label\+0x4
0+0114 <[^>]*> ldbio r4,0\(zero\)
[ ]*114: R_NIOS2_S16 big_external_common\+0x4
0+0118 <[^>]*> ldbio r4,0\(zero\)
[ ]*118: R_NIOS2_S16 small_external_common\+0x4
0+011c <[^>]*> ldbio r4,0\(zero\)
[ ]*11c: R_NIOS2_S16 .bss\+0x4
0+0120 <[^>]*> ldbio r4,0\(zero\)
[ ]*120: R_NIOS2_S16 .bss\+0x4004
0+0124 <[^>]*> ldbio r4,0\(zero\)
[ ]*124: R_NIOS2_S16 .data-0x8000
0+0128 <[^>]*> ldbio r4,0\(zero\)
[ ]*128: R_NIOS2_S16 big_external_data_label-0x8000
0+012c <[^>]*> ldbio r4,0\(zero\)
[ ]*12c: R_NIOS2_S16 small_external_data_label-0x8000
0+0130 <[^>]*> ldbio r4,0\(zero\)
[ ]*130: R_NIOS2_S16 big_external_common-0x8000
0+0134 <[^>]*> ldbio r4,0\(zero\)
[ ]*134: R_NIOS2_S16 small_external_common-0x8000
0+0138 <[^>]*> ldbio r4,0\(zero\)
[ ]*138: R_NIOS2_S16 .bss-0x8000
0+013c <[^>]*> ldbio r4,0\(zero\)
[ ]*13c: R_NIOS2_S16 .bss-0x4000
0+0140 <[^>]*> ldbio r4,0\(zero\)
[ ]*140: R_NIOS2_S16 .data\+0x10000
0+0144 <[^>]*> ldbio r4,0\(r5\)
[ ]*144: R_NIOS2_S16 .data
0+0148 <[^>]*> ldbio r4,0\(r5\)
[ ]*148: R_NIOS2_S16 big_external_data_label
0+014c <[^>]*> ldbio r4,0\(r5\)
[ ]*14c: R_NIOS2_S16 small_external_data_label
0+0150 <[^>]*> ldbio r4,0\(r5\)
[ ]*150: R_NIOS2_S16 big_external_common
0+0154 <[^>]*> ldbio r4,0\(r5\)
[ ]*154: R_NIOS2_S16 small_external_common
0+0158 <[^>]*> ldbio r4,0\(r5\)
[ ]*158: R_NIOS2_S16 .bss
0+015c <[^>]*> ldbio r4,0\(r5\)
[ ]*15c: R_NIOS2_S16 .bss\+0x4000
0+0160 <[^>]*> ldbio r4,0\(r5\)
[ ]*160: R_NIOS2_S16 .data\+0x4
0+0164 <[^>]*> ldbio r4,0\(r5\)
[ ]*164: R_NIOS2_S16 big_external_data_label\+0x4
0+0168 <[^>]*> ldbio r4,0\(r5\)
[ ]*168: R_NIOS2_S16 small_external_data_label\+0x4
0+016c <[^>]*> ldbio r4,0\(r5\)
[ ]*16c: R_NIOS2_S16 big_external_common\+0x4
0+0170 <[^>]*> ldbio r4,0\(r5\)
[ ]*170: R_NIOS2_S16 small_external_common\+0x4
0+0174 <[^>]*> ldbio r4,0\(r5\)
[ ]*174: R_NIOS2_S16 .bss\+0x4
0+0178 <[^>]*> ldbio r4,0\(r5\)
[ ]*178: R_NIOS2_S16 .bss\+0x4004
0+017c <[^>]*> ldbio r4,0\(r5\)
[ ]*17c: R_NIOS2_S16 .data-0x8000
0+0180 <[^>]*> ldbio r4,0\(r5\)
[ ]*180: R_NIOS2_S16 big_external_data_label-0x8000
0+0184 <[^>]*> ldbio r4,0\(r5\)
[ ]*184: R_NIOS2_S16 small_external_data_label-0x8000
0+0188 <[^>]*> ldbio r4,0\(r5\)
[ ]*188: R_NIOS2_S16 big_external_common-0x8000
0+018c <[^>]*> ldbio r4,0\(r5\)
[ ]*18c: R_NIOS2_S16 small_external_common-0x8000
0+0190 <[^>]*> ldbio r4,0\(r5\)
[ ]*190: R_NIOS2_S16 .bss-0x8000
0+0194 <[^>]*> ldbio r4,0\(r5\)
[ ]*194: R_NIOS2_S16 .bss-0x4000

View file

@ -0,0 +1,117 @@
.data
data_label:
.extern big_external_data_label,0x4000
.extern small_external_data_label,4
.comm big_external_common,0x4000
.comm small_external_common,4
.lcomm big_local_common,0x4000
.lcomm small_local_common,4
# the small symbols should have space allocated in the sbss section
# but this is not yet supported in the assembler, so space is allocated
# in the .bss section and the relocations are not gp-relative. this will
# be updated when gp-relative relocations are added
.text
ldb r4,0(r0)
ldb r4,4(r0)
ldb r4,0x7ffc(r0)
ldb r4,-0x8000(r0)
ldb r4,0(r5)
ldb r4,4(r5)
ldb r4,0x7ffc(r5)
ldb r4,-0x8000(r5)
ldb r4,data_label(r0)
ldb r4,big_external_data_label(r0)
ldb r4,small_external_data_label(r0)
ldb r4,big_external_common(r0)
ldb r4,small_external_common(r0)
ldb r4,big_local_common(r0)
ldb r4,small_local_common(r0)
ldb r4,data_label+4(r0)
ldb r4,big_external_data_label+4(r0)
ldb r4,small_external_data_label+4(r0)
ldb r4,big_external_common+4(r0)
ldb r4,small_external_common+4(r0)
ldb r4,big_local_common+4(r0)
ldb r4,small_local_common+4(r0)
ldb r4,data_label-0x8000(r0)
ldb r4,big_external_data_label-0x8000(r0)
ldb r4,small_external_data_label-0x8000(r0)
ldb r4,big_external_common-0x8000(r0)
ldb r4,small_external_common-0x8000(r0)
ldb r4,big_local_common-0x8000(r0)
ldb r4,small_local_common-0x8000(r0)
ldb r4,data_label+0x10000(r0)
ldb r4,data_label(r5)
ldb r4,big_external_data_label(r5)
ldb r4,small_external_data_label(r5)
ldb r4,big_external_common(r5)
ldb r4,small_external_common(r5)
ldb r4,big_local_common(r5)
ldb r4,small_local_common(r5)
ldb r4,data_label+4(r5)
ldb r4,big_external_data_label+4(r5)
ldb r4,small_external_data_label+4(r5)
ldb r4,big_external_common+4(r5)
ldb r4,small_external_common+4(r5)
ldb r4,big_local_common+4(r5)
ldb r4,small_local_common+4(r5)
ldb r4,data_label-0x8000(r5)
ldb r4,big_external_data_label-0x8000(r5)
ldb r4,small_external_data_label-0x8000(r5)
ldb r4,big_external_common-0x8000(r5)
ldb r4,small_external_common-0x8000(r5)
ldb r4,big_local_common-0x8000(r5)
ldb r4,small_local_common-0x8000(r5)
ldbio r4,0(r0)
ldbio r4,4(r0)
ldbio r4,0x7ffc(r0)
ldbio r4,-0x8000(r0)
ldbio r4,0(r5)
ldbio r4,4(r5)
ldbio r4,0x7ffc(r5)
ldbio r4,-0x8000(r5)
ldbio r4,data_label(r0)
ldbio r4,big_external_data_label(r0)
ldbio r4,small_external_data_label(r0)
ldbio r4,big_external_common(r0)
ldbio r4,small_external_common(r0)
ldbio r4,big_local_common(r0)
ldbio r4,small_local_common(r0)
ldbio r4,data_label+4(r0)
ldbio r4,big_external_data_label+4(r0)
ldbio r4,small_external_data_label+4(r0)
ldbio r4,big_external_common+4(r0)
ldbio r4,small_external_common+4(r0)
ldbio r4,big_local_common+4(r0)
ldbio r4,small_local_common+4(r0)
ldbio r4,data_label-0x8000(r0)
ldbio r4,big_external_data_label-0x8000(r0)
ldbio r4,small_external_data_label-0x8000(r0)
ldbio r4,big_external_common-0x8000(r0)
ldbio r4,small_external_common-0x8000(r0)
ldbio r4,big_local_common-0x8000(r0)
ldbio r4,small_local_common-0x8000(r0)
ldbio r4,data_label+0x10000(r0)
ldbio r4,data_label(r5)
ldbio r4,big_external_data_label(r5)
ldbio r4,small_external_data_label(r5)
ldbio r4,big_external_common(r5)
ldbio r4,small_external_common(r5)
ldbio r4,big_local_common(r5)
ldbio r4,small_local_common(r5)
ldbio r4,data_label+4(r5)
ldbio r4,big_external_data_label+4(r5)
ldbio r4,small_external_data_label+4(r5)
ldbio r4,big_external_common+4(r5)
ldbio r4,small_external_common+4(r5)
ldbio r4,big_local_common+4(r5)
ldbio r4,small_local_common+4(r5)
ldbio r4,data_label-0x8000(r5)
ldbio r4,big_external_data_label-0x8000(r5)
ldbio r4,small_external_data_label-0x8000(r5)
ldbio r4,big_external_common-0x8000(r5)
ldbio r4,small_external_common-0x8000(r5)
ldbio r4,big_local_common-0x8000(r5)
ldbio r4,small_local_common-0x8000(r5)

View file

@ -0,0 +1,196 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 ldh
# Test the ld instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> ldh r4,0\(zero\)
0+0004 <[^>]*> ldh r4,4\(zero\)
0+0008 <[^>]*> ldh r4,32764\(zero\)
0+000c <[^>]*> ldh r4,-32768\(zero\)
0+0010 <[^>]*> ldh r4,0\(r5\)
0+0014 <[^>]*> ldh r4,4\(r5\)
0+0018 <[^>]*> ldh r4,32764\(r5\)
0+001c <[^>]*> ldh r4,-32768\(r5\)
0+0020 <[^>]*> ldh r4,0\(zero\)
[ ]*20: R_NIOS2_S16 .data
0+0024 <[^>]*> ldh r4,0\(zero\)
[ ]*24: R_NIOS2_S16 big_external_data_label
0+0028 <[^>]*> ldh r4,0\(zero\)
[ ]*28: R_NIOS2_S16 small_external_data_label
0+002c <[^>]*> ldh r4,0\(zero\)
[ ]*2c: R_NIOS2_S16 big_external_common
0+0030 <[^>]*> ldh r4,0\(zero\)
[ ]*30: R_NIOS2_S16 small_external_common
0+0034 <[^>]*> ldh r4,0\(zero\)
[ ]*34: R_NIOS2_S16 .bss
0+0038 <[^>]*> ldh r4,0\(zero\)
[ ]*38: R_NIOS2_S16 .bss\+0x4000
0+003c <[^>]*> ldh r4,0\(zero\)
[ ]*3c: R_NIOS2_S16 .data\+0x4
0+0040 <[^>]*> ldh r4,0\(zero\)
[ ]*40: R_NIOS2_S16 big_external_data_label\+0x4
0+0044 <[^>]*> ldh r4,0\(zero\)
[ ]*44: R_NIOS2_S16 small_external_data_label\+0x4
0+0048 <[^>]*> ldh r4,0\(zero\)
[ ]*48: R_NIOS2_S16 big_external_common\+0x4
0+004c <[^>]*> ldh r4,0\(zero\)
[ ]*4c: R_NIOS2_S16 small_external_common\+0x4
0+0050 <[^>]*> ldh r4,0\(zero\)
[ ]*50: R_NIOS2_S16 .bss\+0x4
0+0054 <[^>]*> ldh r4,0\(zero\)
[ ]*54: R_NIOS2_S16 .bss\+0x4004
0+0058 <[^>]*> ldh r4,0\(zero\)
[ ]*58: R_NIOS2_S16 .data-0x8000
0+005c <[^>]*> ldh r4,0\(zero\)
[ ]*5c: R_NIOS2_S16 big_external_data_label-0x8000
0+0060 <[^>]*> ldh r4,0\(zero\)
[ ]*60: R_NIOS2_S16 small_external_data_label-0x8000
0+0064 <[^>]*> ldh r4,0\(zero\)
[ ]*64: R_NIOS2_S16 big_external_common-0x8000
0+0068 <[^>]*> ldh r4,0\(zero\)
[ ]*68: R_NIOS2_S16 small_external_common-0x8000
0+006c <[^>]*> ldh r4,0\(zero\)
[ ]*6c: R_NIOS2_S16 .bss-0x8000
0+0070 <[^>]*> ldh r4,0\(zero\)
[ ]*70: R_NIOS2_S16 .bss-0x4000
0+0074 <[^>]*> ldh r4,0\(zero\)
[ ]*74: R_NIOS2_S16 .data\+0x10000
0+0078 <[^>]*> ldh r4,0\(r5\)
[ ]*78: R_NIOS2_S16 .data
0+007c <[^>]*> ldh r4,0\(r5\)
[ ]*7c: R_NIOS2_S16 big_external_data_label
0+0080 <[^>]*> ldh r4,0\(r5\)
[ ]*80: R_NIOS2_S16 small_external_data_label
0+0084 <[^>]*> ldh r4,0\(r5\)
[ ]*84: R_NIOS2_S16 big_external_common
0+0088 <[^>]*> ldh r4,0\(r5\)
[ ]*88: R_NIOS2_S16 small_external_common
0+008c <[^>]*> ldh r4,0\(r5\)
[ ]*8c: R_NIOS2_S16 .bss
0+0090 <[^>]*> ldh r4,0\(r5\)
[ ]*90: R_NIOS2_S16 .bss\+0x4000
0+0094 <[^>]*> ldh r4,0\(r5\)
[ ]*94: R_NIOS2_S16 .data\+0x4
0+0098 <[^>]*> ldh r4,0\(r5\)
[ ]*98: R_NIOS2_S16 big_external_data_label\+0x4
0+009c <[^>]*> ldh r4,0\(r5\)
[ ]*9c: R_NIOS2_S16 small_external_data_label\+0x4
0+00a0 <[^>]*> ldh r4,0\(r5\)
[ ]*a0: R_NIOS2_S16 big_external_common\+0x4
0+00a4 <[^>]*> ldh r4,0\(r5\)
[ ]*a4: R_NIOS2_S16 small_external_common\+0x4
0+00a8 <[^>]*> ldh r4,0\(r5\)
[ ]*a8: R_NIOS2_S16 .bss\+0x4
0+00ac <[^>]*> ldh r4,0\(r5\)
[ ]*ac: R_NIOS2_S16 .bss\+0x4004
0+00b0 <[^>]*> ldh r4,0\(r5\)
[ ]*b0: R_NIOS2_S16 .data-0x8000
0+00b4 <[^>]*> ldh r4,0\(r5\)
[ ]*b4: R_NIOS2_S16 big_external_data_label-0x8000
0+00b8 <[^>]*> ldh r4,0\(r5\)
[ ]*b8: R_NIOS2_S16 small_external_data_label-0x8000
0+00bc <[^>]*> ldh r4,0\(r5\)
[ ]*bc: R_NIOS2_S16 big_external_common-0x8000
0+00c0 <[^>]*> ldh r4,0\(r5\)
[ ]*c0: R_NIOS2_S16 small_external_common-0x8000
0+00c4 <[^>]*> ldh r4,0\(r5\)
[ ]*c4: R_NIOS2_S16 .bss-0x8000
0+00c8 <[^>]*> ldh r4,0\(r5\)
[ ]*c8: R_NIOS2_S16 .bss-0x4000
0+00cc <[^>]*> ldhio r4,0\(zero\)
0+00d0 <[^>]*> ldhio r4,4\(zero\)
0+00d4 <[^>]*> ldhio r4,32764\(zero\)
0+00d8 <[^>]*> ldhio r4,-32768\(zero\)
0+00dc <[^>]*> ldhio r4,0\(r5\)
0+00e0 <[^>]*> ldhio r4,4\(r5\)
0+00e4 <[^>]*> ldhio r4,32764\(r5\)
0+00e8 <[^>]*> ldhio r4,-32768\(r5\)
0+00ec <[^>]*> ldhio r4,0\(zero\)
[ ]*ec: R_NIOS2_S16 .data
0+00f0 <[^>]*> ldhio r4,0\(zero\)
[ ]*f0: R_NIOS2_S16 big_external_data_label
0+00f4 <[^>]*> ldhio r4,0\(zero\)
[ ]*f4: R_NIOS2_S16 small_external_data_label
0+00f8 <[^>]*> ldhio r4,0\(zero\)
[ ]*f8: R_NIOS2_S16 big_external_common
0+00fc <[^>]*> ldhio r4,0\(zero\)
[ ]*fc: R_NIOS2_S16 small_external_common
0+0100 <[^>]*> ldhio r4,0\(zero\)
[ ]*100: R_NIOS2_S16 .bss
0+0104 <[^>]*> ldhio r4,0\(zero\)
[ ]*104: R_NIOS2_S16 .bss\+0x4000
0+0108 <[^>]*> ldhio r4,0\(zero\)
[ ]*108: R_NIOS2_S16 .data\+0x4
0+010c <[^>]*> ldhio r4,0\(zero\)
[ ]*10c: R_NIOS2_S16 big_external_data_label\+0x4
0+0110 <[^>]*> ldhio r4,0\(zero\)
[ ]*110: R_NIOS2_S16 small_external_data_label\+0x4
0+0114 <[^>]*> ldhio r4,0\(zero\)
[ ]*114: R_NIOS2_S16 big_external_common\+0x4
0+0118 <[^>]*> ldhio r4,0\(zero\)
[ ]*118: R_NIOS2_S16 small_external_common\+0x4
0+011c <[^>]*> ldhio r4,0\(zero\)
[ ]*11c: R_NIOS2_S16 .bss\+0x4
0+0120 <[^>]*> ldhio r4,0\(zero\)
[ ]*120: R_NIOS2_S16 .bss\+0x4004
0+0124 <[^>]*> ldhio r4,0\(zero\)
[ ]*124: R_NIOS2_S16 .data-0x8000
0+0128 <[^>]*> ldhio r4,0\(zero\)
[ ]*128: R_NIOS2_S16 big_external_data_label-0x8000
0+012c <[^>]*> ldhio r4,0\(zero\)
[ ]*12c: R_NIOS2_S16 small_external_data_label-0x8000
0+0130 <[^>]*> ldhio r4,0\(zero\)
[ ]*130: R_NIOS2_S16 big_external_common-0x8000
0+0134 <[^>]*> ldhio r4,0\(zero\)
[ ]*134: R_NIOS2_S16 small_external_common-0x8000
0+0138 <[^>]*> ldhio r4,0\(zero\)
[ ]*138: R_NIOS2_S16 .bss-0x8000
0+013c <[^>]*> ldhio r4,0\(zero\)
[ ]*13c: R_NIOS2_S16 .bss-0x4000
0+0140 <[^>]*> ldhio r4,0\(zero\)
[ ]*140: R_NIOS2_S16 .data\+0x10000
0+0144 <[^>]*> ldhio r4,0\(r5\)
[ ]*144: R_NIOS2_S16 .data
0+0148 <[^>]*> ldhio r4,0\(r5\)
[ ]*148: R_NIOS2_S16 big_external_data_label
0+014c <[^>]*> ldhio r4,0\(r5\)
[ ]*14c: R_NIOS2_S16 small_external_data_label
0+0150 <[^>]*> ldhio r4,0\(r5\)
[ ]*150: R_NIOS2_S16 big_external_common
0+0154 <[^>]*> ldhio r4,0\(r5\)
[ ]*154: R_NIOS2_S16 small_external_common
0+0158 <[^>]*> ldhio r4,0\(r5\)
[ ]*158: R_NIOS2_S16 .bss
0+015c <[^>]*> ldhio r4,0\(r5\)
[ ]*15c: R_NIOS2_S16 .bss\+0x4000
0+0160 <[^>]*> ldhio r4,0\(r5\)
[ ]*160: R_NIOS2_S16 .data\+0x4
0+0164 <[^>]*> ldhio r4,0\(r5\)
[ ]*164: R_NIOS2_S16 big_external_data_label\+0x4
0+0168 <[^>]*> ldhio r4,0\(r5\)
[ ]*168: R_NIOS2_S16 small_external_data_label\+0x4
0+016c <[^>]*> ldhio r4,0\(r5\)
[ ]*16c: R_NIOS2_S16 big_external_common\+0x4
0+0170 <[^>]*> ldhio r4,0\(r5\)
[ ]*170: R_NIOS2_S16 small_external_common\+0x4
0+0174 <[^>]*> ldhio r4,0\(r5\)
[ ]*174: R_NIOS2_S16 .bss\+0x4
0+0178 <[^>]*> ldhio r4,0\(r5\)
[ ]*178: R_NIOS2_S16 .bss\+0x4004
0+017c <[^>]*> ldhio r4,0\(r5\)
[ ]*17c: R_NIOS2_S16 .data-0x8000
0+0180 <[^>]*> ldhio r4,0\(r5\)
[ ]*180: R_NIOS2_S16 big_external_data_label-0x8000
0+0184 <[^>]*> ldhio r4,0\(r5\)
[ ]*184: R_NIOS2_S16 small_external_data_label-0x8000
0+0188 <[^>]*> ldhio r4,0\(r5\)
[ ]*188: R_NIOS2_S16 big_external_common-0x8000
0+018c <[^>]*> ldhio r4,0\(r5\)
[ ]*18c: R_NIOS2_S16 small_external_common-0x8000
0+0190 <[^>]*> ldhio r4,0\(r5\)
[ ]*190: R_NIOS2_S16 .bss-0x8000
0+0194 <[^>]*> ldhio r4,0\(r5\)
[ ]*194: R_NIOS2_S16 .bss-0x4000

View file

@ -0,0 +1,117 @@
.data
data_label:
.extern big_external_data_label,0x4000
.extern small_external_data_label,4
.comm big_external_common,0x4000
.comm small_external_common,4
.lcomm big_local_common,0x4000
.lcomm small_local_common,4
# the small symbols should have space allocated in the sbss section
# but this is not yet supported in the assembler, so space is allocated
# in the .bss section and the relocations are not gp-relative. this will
# be updated when gp-relative relocations are added
.text
ldh r4,0(r0)
ldh r4,4(r0)
ldh r4,0x7ffc(r0)
ldh r4,-0x8000(r0)
ldh r4,0(r5)
ldh r4,4(r5)
ldh r4,0x7ffc(r5)
ldh r4,-0x8000(r5)
ldh r4,data_label(r0)
ldh r4,big_external_data_label(r0)
ldh r4,small_external_data_label(r0)
ldh r4,big_external_common(r0)
ldh r4,small_external_common(r0)
ldh r4,big_local_common(r0)
ldh r4,small_local_common(r0)
ldh r4,data_label+4(r0)
ldh r4,big_external_data_label+4(r0)
ldh r4,small_external_data_label+4(r0)
ldh r4,big_external_common+4(r0)
ldh r4,small_external_common+4(r0)
ldh r4,big_local_common+4(r0)
ldh r4,small_local_common+4(r0)
ldh r4,data_label-0x8000(r0)
ldh r4,big_external_data_label-0x8000(r0)
ldh r4,small_external_data_label-0x8000(r0)
ldh r4,big_external_common-0x8000(r0)
ldh r4,small_external_common-0x8000(r0)
ldh r4,big_local_common-0x8000(r0)
ldh r4,small_local_common-0x8000(r0)
ldh r4,data_label+0x10000(r0)
ldh r4,data_label(r5)
ldh r4,big_external_data_label(r5)
ldh r4,small_external_data_label(r5)
ldh r4,big_external_common(r5)
ldh r4,small_external_common(r5)
ldh r4,big_local_common(r5)
ldh r4,small_local_common(r5)
ldh r4,data_label+4(r5)
ldh r4,big_external_data_label+4(r5)
ldh r4,small_external_data_label+4(r5)
ldh r4,big_external_common+4(r5)
ldh r4,small_external_common+4(r5)
ldh r4,big_local_common+4(r5)
ldh r4,small_local_common+4(r5)
ldh r4,data_label-0x8000(r5)
ldh r4,big_external_data_label-0x8000(r5)
ldh r4,small_external_data_label-0x8000(r5)
ldh r4,big_external_common-0x8000(r5)
ldh r4,small_external_common-0x8000(r5)
ldh r4,big_local_common-0x8000(r5)
ldh r4,small_local_common-0x8000(r5)
ldhio r4,0(r0)
ldhio r4,4(r0)
ldhio r4,0x7ffc(r0)
ldhio r4,-0x8000(r0)
ldhio r4,0(r5)
ldhio r4,4(r5)
ldhio r4,0x7ffc(r5)
ldhio r4,-0x8000(r5)
ldhio r4,data_label(r0)
ldhio r4,big_external_data_label(r0)
ldhio r4,small_external_data_label(r0)
ldhio r4,big_external_common(r0)
ldhio r4,small_external_common(r0)
ldhio r4,big_local_common(r0)
ldhio r4,small_local_common(r0)
ldhio r4,data_label+4(r0)
ldhio r4,big_external_data_label+4(r0)
ldhio r4,small_external_data_label+4(r0)
ldhio r4,big_external_common+4(r0)
ldhio r4,small_external_common+4(r0)
ldhio r4,big_local_common+4(r0)
ldhio r4,small_local_common+4(r0)
ldhio r4,data_label-0x8000(r0)
ldhio r4,big_external_data_label-0x8000(r0)
ldhio r4,small_external_data_label-0x8000(r0)
ldhio r4,big_external_common-0x8000(r0)
ldhio r4,small_external_common-0x8000(r0)
ldhio r4,big_local_common-0x8000(r0)
ldhio r4,small_local_common-0x8000(r0)
ldhio r4,data_label+0x10000(r0)
ldhio r4,data_label(r5)
ldhio r4,big_external_data_label(r5)
ldhio r4,small_external_data_label(r5)
ldhio r4,big_external_common(r5)
ldhio r4,small_external_common(r5)
ldhio r4,big_local_common(r5)
ldhio r4,small_local_common(r5)
ldhio r4,data_label+4(r5)
ldhio r4,big_external_data_label+4(r5)
ldhio r4,small_external_data_label+4(r5)
ldhio r4,big_external_common+4(r5)
ldhio r4,small_external_common+4(r5)
ldhio r4,big_local_common+4(r5)
ldhio r4,small_local_common+4(r5)
ldhio r4,data_label-0x8000(r5)
ldhio r4,big_external_data_label-0x8000(r5)
ldhio r4,small_external_data_label-0x8000(r5)
ldhio r4,big_external_common-0x8000(r5)
ldhio r4,small_external_common-0x8000(r5)
ldhio r4,big_local_common-0x8000(r5)
ldhio r4,small_local_common-0x8000(r5)

View file

@ -0,0 +1,196 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 ldw
# Test the ld instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> ldw r4,0\(zero\)
0+0004 <[^>]*> ldw r4,4\(zero\)
0+0008 <[^>]*> ldw r4,32764\(zero\)
0+000c <[^>]*> ldw r4,-32768\(zero\)
0+0010 <[^>]*> ldw r4,0\(r5\)
0+0014 <[^>]*> ldw r4,4\(r5\)
0+0018 <[^>]*> ldw r4,32764\(r5\)
0+001c <[^>]*> ldw r4,-32768\(r5\)
0+0020 <[^>]*> ldw r4,0\(zero\)
[ ]*20: R_NIOS2_S16 .data
0+0024 <[^>]*> ldw r4,0\(zero\)
[ ]*24: R_NIOS2_S16 big_external_data_label
0+0028 <[^>]*> ldw r4,0\(zero\)
[ ]*28: R_NIOS2_S16 small_external_data_label
0+002c <[^>]*> ldw r4,0\(zero\)
[ ]*2c: R_NIOS2_S16 big_external_common
0+0030 <[^>]*> ldw r4,0\(zero\)
[ ]*30: R_NIOS2_S16 small_external_common
0+0034 <[^>]*> ldw r4,0\(zero\)
[ ]*34: R_NIOS2_S16 .bss
0+0038 <[^>]*> ldw r4,0\(zero\)
[ ]*38: R_NIOS2_S16 .bss\+0x4000
0+003c <[^>]*> ldw r4,0\(zero\)
[ ]*3c: R_NIOS2_S16 .data\+0x4
0+0040 <[^>]*> ldw r4,0\(zero\)
[ ]*40: R_NIOS2_S16 big_external_data_label\+0x4
0+0044 <[^>]*> ldw r4,0\(zero\)
[ ]*44: R_NIOS2_S16 small_external_data_label\+0x4
0+0048 <[^>]*> ldw r4,0\(zero\)
[ ]*48: R_NIOS2_S16 big_external_common\+0x4
0+004c <[^>]*> ldw r4,0\(zero\)
[ ]*4c: R_NIOS2_S16 small_external_common\+0x4
0+0050 <[^>]*> ldw r4,0\(zero\)
[ ]*50: R_NIOS2_S16 .bss\+0x4
0+0054 <[^>]*> ldw r4,0\(zero\)
[ ]*54: R_NIOS2_S16 .bss\+0x4004
0+0058 <[^>]*> ldw r4,0\(zero\)
[ ]*58: R_NIOS2_S16 .data-0x8000
0+005c <[^>]*> ldw r4,0\(zero\)
[ ]*5c: R_NIOS2_S16 big_external_data_label-0x8000
0+0060 <[^>]*> ldw r4,0\(zero\)
[ ]*60: R_NIOS2_S16 small_external_data_label-0x8000
0+0064 <[^>]*> ldw r4,0\(zero\)
[ ]*64: R_NIOS2_S16 big_external_common-0x8000
0+0068 <[^>]*> ldw r4,0\(zero\)
[ ]*68: R_NIOS2_S16 small_external_common-0x8000
0+006c <[^>]*> ldw r4,0\(zero\)
[ ]*6c: R_NIOS2_S16 .bss-0x8000
0+0070 <[^>]*> ldw r4,0\(zero\)
[ ]*70: R_NIOS2_S16 .bss-0x4000
0+0074 <[^>]*> ldw r4,0\(zero\)
[ ]*74: R_NIOS2_S16 .data\+0x10000
0+0078 <[^>]*> ldw r4,0\(r5\)
[ ]*78: R_NIOS2_S16 .data
0+007c <[^>]*> ldw r4,0\(r5\)
[ ]*7c: R_NIOS2_S16 big_external_data_label
0+0080 <[^>]*> ldw r4,0\(r5\)
[ ]*80: R_NIOS2_S16 small_external_data_label
0+0084 <[^>]*> ldw r4,0\(r5\)
[ ]*84: R_NIOS2_S16 big_external_common
0+0088 <[^>]*> ldw r4,0\(r5\)
[ ]*88: R_NIOS2_S16 small_external_common
0+008c <[^>]*> ldw r4,0\(r5\)
[ ]*8c: R_NIOS2_S16 .bss
0+0090 <[^>]*> ldw r4,0\(r5\)
[ ]*90: R_NIOS2_S16 .bss\+0x4000
0+0094 <[^>]*> ldw r4,0\(r5\)
[ ]*94: R_NIOS2_S16 .data\+0x4
0+0098 <[^>]*> ldw r4,0\(r5\)
[ ]*98: R_NIOS2_S16 big_external_data_label\+0x4
0+009c <[^>]*> ldw r4,0\(r5\)
[ ]*9c: R_NIOS2_S16 small_external_data_label\+0x4
0+00a0 <[^>]*> ldw r4,0\(r5\)
[ ]*a0: R_NIOS2_S16 big_external_common\+0x4
0+00a4 <[^>]*> ldw r4,0\(r5\)
[ ]*a4: R_NIOS2_S16 small_external_common\+0x4
0+00a8 <[^>]*> ldw r4,0\(r5\)
[ ]*a8: R_NIOS2_S16 .bss\+0x4
0+00ac <[^>]*> ldw r4,0\(r5\)
[ ]*ac: R_NIOS2_S16 .bss\+0x4004
0+00b0 <[^>]*> ldw r4,0\(r5\)
[ ]*b0: R_NIOS2_S16 .data-0x8000
0+00b4 <[^>]*> ldw r4,0\(r5\)
[ ]*b4: R_NIOS2_S16 big_external_data_label-0x8000
0+00b8 <[^>]*> ldw r4,0\(r5\)
[ ]*b8: R_NIOS2_S16 small_external_data_label-0x8000
0+00bc <[^>]*> ldw r4,0\(r5\)
[ ]*bc: R_NIOS2_S16 big_external_common-0x8000
0+00c0 <[^>]*> ldw r4,0\(r5\)
[ ]*c0: R_NIOS2_S16 small_external_common-0x8000
0+00c4 <[^>]*> ldw r4,0\(r5\)
[ ]*c4: R_NIOS2_S16 .bss-0x8000
0+00c8 <[^>]*> ldw r4,0\(r5\)
[ ]*c8: R_NIOS2_S16 .bss-0x4000
0+00cc <[^>]*> ldwio r4,0\(zero\)
0+00d0 <[^>]*> ldwio r4,4\(zero\)
0+00d4 <[^>]*> ldwio r4,32764\(zero\)
0+00d8 <[^>]*> ldwio r4,-32768\(zero\)
0+00dc <[^>]*> ldwio r4,0\(r5\)
0+00e0 <[^>]*> ldwio r4,4\(r5\)
0+00e4 <[^>]*> ldwio r4,32764\(r5\)
0+00e8 <[^>]*> ldwio r4,-32768\(r5\)
0+00ec <[^>]*> ldwio r4,0\(zero\)
[ ]*ec: R_NIOS2_S16 .data
0+00f0 <[^>]*> ldwio r4,0\(zero\)
[ ]*f0: R_NIOS2_S16 big_external_data_label
0+00f4 <[^>]*> ldwio r4,0\(zero\)
[ ]*f4: R_NIOS2_S16 small_external_data_label
0+00f8 <[^>]*> ldwio r4,0\(zero\)
[ ]*f8: R_NIOS2_S16 big_external_common
0+00fc <[^>]*> ldwio r4,0\(zero\)
[ ]*fc: R_NIOS2_S16 small_external_common
0+0100 <[^>]*> ldwio r4,0\(zero\)
[ ]*100: R_NIOS2_S16 .bss
0+0104 <[^>]*> ldwio r4,0\(zero\)
[ ]*104: R_NIOS2_S16 .bss\+0x4000
0+0108 <[^>]*> ldwio r4,0\(zero\)
[ ]*108: R_NIOS2_S16 .data\+0x4
0+010c <[^>]*> ldwio r4,0\(zero\)
[ ]*10c: R_NIOS2_S16 big_external_data_label\+0x4
0+0110 <[^>]*> ldwio r4,0\(zero\)
[ ]*110: R_NIOS2_S16 small_external_data_label\+0x4
0+0114 <[^>]*> ldwio r4,0\(zero\)
[ ]*114: R_NIOS2_S16 big_external_common\+0x4
0+0118 <[^>]*> ldwio r4,0\(zero\)
[ ]*118: R_NIOS2_S16 small_external_common\+0x4
0+011c <[^>]*> ldwio r4,0\(zero\)
[ ]*11c: R_NIOS2_S16 .bss\+0x4
0+0120 <[^>]*> ldwio r4,0\(zero\)
[ ]*120: R_NIOS2_S16 .bss\+0x4004
0+0124 <[^>]*> ldwio r4,0\(zero\)
[ ]*124: R_NIOS2_S16 .data-0x8000
0+0128 <[^>]*> ldwio r4,0\(zero\)
[ ]*128: R_NIOS2_S16 big_external_data_label-0x8000
0+012c <[^>]*> ldwio r4,0\(zero\)
[ ]*12c: R_NIOS2_S16 small_external_data_label-0x8000
0+0130 <[^>]*> ldwio r4,0\(zero\)
[ ]*130: R_NIOS2_S16 big_external_common-0x8000
0+0134 <[^>]*> ldwio r4,0\(zero\)
[ ]*134: R_NIOS2_S16 small_external_common-0x8000
0+0138 <[^>]*> ldwio r4,0\(zero\)
[ ]*138: R_NIOS2_S16 .bss-0x8000
0+013c <[^>]*> ldwio r4,0\(zero\)
[ ]*13c: R_NIOS2_S16 .bss-0x4000
0+0140 <[^>]*> ldwio r4,0\(zero\)
[ ]*140: R_NIOS2_S16 .data\+0x10000
0+0144 <[^>]*> ldwio r4,0\(r5\)
[ ]*144: R_NIOS2_S16 .data
0+0148 <[^>]*> ldwio r4,0\(r5\)
[ ]*148: R_NIOS2_S16 big_external_data_label
0+014c <[^>]*> ldwio r4,0\(r5\)
[ ]*14c: R_NIOS2_S16 small_external_data_label
0+0150 <[^>]*> ldwio r4,0\(r5\)
[ ]*150: R_NIOS2_S16 big_external_common
0+0154 <[^>]*> ldwio r4,0\(r5\)
[ ]*154: R_NIOS2_S16 small_external_common
0+0158 <[^>]*> ldwio r4,0\(r5\)
[ ]*158: R_NIOS2_S16 .bss
0+015c <[^>]*> ldwio r4,0\(r5\)
[ ]*15c: R_NIOS2_S16 .bss\+0x4000
0+0160 <[^>]*> ldwio r4,0\(r5\)
[ ]*160: R_NIOS2_S16 .data\+0x4
0+0164 <[^>]*> ldwio r4,0\(r5\)
[ ]*164: R_NIOS2_S16 big_external_data_label\+0x4
0+0168 <[^>]*> ldwio r4,0\(r5\)
[ ]*168: R_NIOS2_S16 small_external_data_label\+0x4
0+016c <[^>]*> ldwio r4,0\(r5\)
[ ]*16c: R_NIOS2_S16 big_external_common\+0x4
0+0170 <[^>]*> ldwio r4,0\(r5\)
[ ]*170: R_NIOS2_S16 small_external_common\+0x4
0+0174 <[^>]*> ldwio r4,0\(r5\)
[ ]*174: R_NIOS2_S16 .bss\+0x4
0+0178 <[^>]*> ldwio r4,0\(r5\)
[ ]*178: R_NIOS2_S16 .bss\+0x4004
0+017c <[^>]*> ldwio r4,0\(r5\)
[ ]*17c: R_NIOS2_S16 .data-0x8000
0+0180 <[^>]*> ldwio r4,0\(r5\)
[ ]*180: R_NIOS2_S16 big_external_data_label-0x8000
0+0184 <[^>]*> ldwio r4,0\(r5\)
[ ]*184: R_NIOS2_S16 small_external_data_label-0x8000
0+0188 <[^>]*> ldwio r4,0\(r5\)
[ ]*188: R_NIOS2_S16 big_external_common-0x8000
0+018c <[^>]*> ldwio r4,0\(r5\)
[ ]*18c: R_NIOS2_S16 small_external_common-0x8000
0+0190 <[^>]*> ldwio r4,0\(r5\)
[ ]*190: R_NIOS2_S16 .bss-0x8000
0+0194 <[^>]*> ldwio r4,0\(r5\)
[ ]*194: R_NIOS2_S16 .bss-0x4000

View file

@ -0,0 +1,117 @@
.data
data_label:
.extern big_external_data_label,0x4000
.extern small_external_data_label,4
.comm big_external_common,0x4000
.comm small_external_common,4
.lcomm big_local_common,0x4000
.lcomm small_local_common,4
# the small symbols should have space allocated in the sbss section
# but this is not yet supported in the assembler, so space is allocated
# in the .bss section and the relocations are not gp-relative. this will
# be updated when gp-relative relocations are added
.text
ldw r4,0(r0)
ldw r4,4(r0)
ldw r4,0x7ffc(r0)
ldw r4,-0x8000(r0)
ldw r4,0(r5)
ldw r4,4(r5)
ldw r4,0x7ffc(r5)
ldw r4,-0x8000(r5)
ldw r4,data_label(r0)
ldw r4,big_external_data_label(r0)
ldw r4,small_external_data_label(r0)
ldw r4,big_external_common(r0)
ldw r4,small_external_common(r0)
ldw r4,big_local_common(r0)
ldw r4,small_local_common(r0)
ldw r4,data_label+4(r0)
ldw r4,big_external_data_label+4(r0)
ldw r4,small_external_data_label+4(r0)
ldw r4,big_external_common+4(r0)
ldw r4,small_external_common+4(r0)
ldw r4,big_local_common+4(r0)
ldw r4,small_local_common+4(r0)
ldw r4,data_label-0x8000(r0)
ldw r4,big_external_data_label-0x8000(r0)
ldw r4,small_external_data_label-0x8000(r0)
ldw r4,big_external_common-0x8000(r0)
ldw r4,small_external_common-0x8000(r0)
ldw r4,big_local_common-0x8000(r0)
ldw r4,small_local_common-0x8000(r0)
ldw r4,data_label+0x10000(r0)
ldw r4,data_label(r5)
ldw r4,big_external_data_label(r5)
ldw r4,small_external_data_label(r5)
ldw r4,big_external_common(r5)
ldw r4,small_external_common(r5)
ldw r4,big_local_common(r5)
ldw r4,small_local_common(r5)
ldw r4,data_label+4(r5)
ldw r4,big_external_data_label+4(r5)
ldw r4,small_external_data_label+4(r5)
ldw r4,big_external_common+4(r5)
ldw r4,small_external_common+4(r5)
ldw r4,big_local_common+4(r5)
ldw r4,small_local_common+4(r5)
ldw r4,data_label-0x8000(r5)
ldw r4,big_external_data_label-0x8000(r5)
ldw r4,small_external_data_label-0x8000(r5)
ldw r4,big_external_common-0x8000(r5)
ldw r4,small_external_common-0x8000(r5)
ldw r4,big_local_common-0x8000(r5)
ldw r4,small_local_common-0x8000(r5)
ldwio r4,0(r0)
ldwio r4,4(r0)
ldwio r4,0x7ffc(r0)
ldwio r4,-0x8000(r0)
ldwio r4,0(r5)
ldwio r4,4(r5)
ldwio r4,0x7ffc(r5)
ldwio r4,-0x8000(r5)
ldwio r4,data_label(r0)
ldwio r4,big_external_data_label(r0)
ldwio r4,small_external_data_label(r0)
ldwio r4,big_external_common(r0)
ldwio r4,small_external_common(r0)
ldwio r4,big_local_common(r0)
ldwio r4,small_local_common(r0)
ldwio r4,data_label+4(r0)
ldwio r4,big_external_data_label+4(r0)
ldwio r4,small_external_data_label+4(r0)
ldwio r4,big_external_common+4(r0)
ldwio r4,small_external_common+4(r0)
ldwio r4,big_local_common+4(r0)
ldwio r4,small_local_common+4(r0)
ldwio r4,data_label-0x8000(r0)
ldwio r4,big_external_data_label-0x8000(r0)
ldwio r4,small_external_data_label-0x8000(r0)
ldwio r4,big_external_common-0x8000(r0)
ldwio r4,small_external_common-0x8000(r0)
ldwio r4,big_local_common-0x8000(r0)
ldwio r4,small_local_common-0x8000(r0)
ldwio r4,data_label+0x10000(r0)
ldwio r4,data_label(r5)
ldwio r4,big_external_data_label(r5)
ldwio r4,small_external_data_label(r5)
ldwio r4,big_external_common(r5)
ldwio r4,small_external_common(r5)
ldwio r4,big_local_common(r5)
ldwio r4,small_local_common(r5)
ldwio r4,data_label+4(r5)
ldwio r4,big_external_data_label+4(r5)
ldwio r4,small_external_data_label+4(r5)
ldwio r4,big_external_common+4(r5)
ldwio r4,small_external_common+4(r5)
ldwio r4,big_local_common+4(r5)
ldwio r4,small_local_common+4(r5)
ldwio r4,data_label-0x8000(r5)
ldwio r4,big_external_data_label-0x8000(r5)
ldwio r4,small_external_data_label-0x8000(r5)
ldwio r4,big_external_common-0x8000(r5)
ldwio r4,small_external_common-0x8000(r5)
ldwio r4,big_local_common-0x8000(r5)
ldwio r4,small_local_common-0x8000(r5)

View file

@ -0,0 +1,10 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 lineseparator
# Test the add instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0x0+0000 mov r5,r4
0x0+0004 mov r4,r5

View file

@ -0,0 +1,4 @@
mov r5, r4 ; mov r4, r5

View file

@ -0,0 +1,11 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 mov
# Test the mov instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> movz \$4,\$5,\$6
0+0004 <[^>]*> movnz \$4,\$5,\$6

View file

@ -0,0 +1,5 @@
# Source file used to test the movz and movnz instructions
foo:
movz $4,$5,$6
movnz $4,$5,$6

View file

@ -0,0 +1,13 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 movi
# Test implicit conversion of movi/movhi etc
.*: file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> movi r2,32
0+0004 <[^>]*> movhi r2,8192
0+0008 <[^>]*> movhi r2,65535
0+000c <[^>]*> orhi r2,r5,65535
0+0010 <[^>]*> xorhi r2,r10,65535
0+0014 <[^>]*> andhi r2,r15,65535

View file

@ -0,0 +1,21 @@
# Source file used to test silent conversion of
# movi to orhi etc
foo:
# this doesn't get converted
movi r2, 0x20
# this does
movi r2, 0x20000000
# addi should convert only if the source register is r0
addi r2, r0, 0xffff0000
# but we can't test for non-conversion because the value would
# be out of range
# logical ops should convert for any register
ori r2, r5, 0xffff0000
xori r2, r10, 0xffff0000
andi r2, r15, 0xffff0000

View file

@ -0,0 +1,18 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 movia
# Test the movia instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> movhi r2,32897
0+0004 <[^>]*> addi r2,r2,-32640
0+0008 <[^>]*> movhi r3,0
8: R_NIOS2_HIADJ16 sym-0x80000000
0+000c <[^>]*> addi r3,r3,0
c: R_NIOS2_LO16 sym-0x80000000
0+0010 <[^>]*> movhi r4,0
10: R_NIOS2_HIADJ16 sym-0x7fffffff
0+0014 <[^>]*> addi r4,r4,0
14: R_NIOS2_LO16 sym-0x7fffffff

View file

@ -0,0 +1,6 @@
# Test program for movia reg, immed32 macro
foo:
movia r2, 0x80808080
movia r3, sym + 0x80000000
movia r4, sym - 0x7fffffff

View file

@ -0,0 +1,19 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 mul
# Test the mul macro.
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> mul r4,r5,r6
0+0004 <[^>]*> muli r4,r5,0
0+0008 <[^>]*> muli r4,r5,1
0+000c <[^>]*> muli r4,r5,-32768
0+0010 <[^>]*> muli r4,r5,32767
0+0014 <[^>]*> muli r4,r5,0
[ ]*14: R_NIOS2_S16 undefined_symbol
0+0018 <[^>]*> muli r4,r5,16448
0+001c <[^>]*> mulxss r4,r5,r6
0+0020 <[^>]*> mulxsu r4,r5,r6
0+0024 <[^>]*> mulxuu r4,r5,r6

View file

@ -0,0 +1,15 @@
# Source file used to test the mul macro.
foo:
mul r4,r5,r6
muli r4,r5,0
muli r4,r5,1
muli r4,r5,-0x8000
muli r4,r5,0x7fff
muli r4,r5,undefined_symbol
muli r4,r5,defined_symbol
mulxss r4,r5,r6
mulxsu r4,r5,r6
mulxuu r4,r5,r6
.data
.set defined_symbol, 0x4040

View file

@ -0,0 +1,75 @@
#
# Some generic Nios II tests
#
proc run_list_test { name } {
global srcdir subdir
set testname "NIOS2 $name"
set file $srcdir/$subdir/$name
gas_run ${name}.s "" ">&dump.out"
if { [regexp_diff "dump.out" "${file}.l"] } then {
fail $testname
verbose "output is [file_contents "dump.out"]" 2
return
}
pass $testname
}
if { [istarget nios2-*-*] } then {
run_dump_test "add"
run_dump_test "and"
run_dump_test "align_fill"
run_dump_test "align_text"
run_dump_test "branch"
run_dump_test "break"
run_dump_test "bret"
run_dump_test "cache"
run_dump_test "call"
run_dump_test "call26"
run_dump_test "cmp"
run_dump_test "jmp"
run_dump_test "ldw"
run_dump_test "ldh"
run_dump_test "ldb"
run_dump_test "flushda"
run_dump_test "mul"
run_dump_test "nor"
run_dump_test "or"
run_dump_test "ctl"
run_dump_test "ret"
run_dump_test "rotate"
run_dump_test "stw"
run_dump_test "sth"
run_dump_test "stb"
run_dump_test "sub"
run_dump_test "sync"
run_dump_test "trap"
run_dump_test "tret"
run_dump_test "custom"
run_dump_test "xor"
run_dump_test "movia"
run_dump_test "complex"
run_dump_test "comments"
run_dump_test "etbt"
run_dump_test "lineseparator"
run_dump_test "movi"
run_list_test "illegal"
run_list_test "warn_nobreak"
run_list_test "warn_noat"
}

View file

@ -0,0 +1,9 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 nor
# Test the nor instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> nor r6,r8,r10

View file

@ -0,0 +1,5 @@
# Source file used to test the nor instruction
foo:
nor r6,r8,r10

View file

@ -0,0 +1,11 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 or
# Test the nor instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> or r6,r8,r10
0+0004 <[^>]*> orhi r6,r7,65535
0+0008 <[^>]*> ori r6,r7,65535

View file

@ -0,0 +1,7 @@
# Source file used to test the nor instruction
foo:
or r6,r8,r10
orhi r6,r7,0xffff
ori r6,r7,0xffff

View file

@ -0,0 +1,8 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 ret
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> ret

View file

@ -0,0 +1,5 @@
# Source file used to test the ret instructions
foo:
ret

View file

@ -0,0 +1,40 @@
#objdump: -dr --prefix-addresses -mmips:3000
#as: -march=r3000 -mtune=r3000
#name: MIPS R3000 rol
# Test the rol and ror macros.
.*: +file format .*mips.*
Disassembly of section .text:
0+0000 <[^>]*> negu at,a1
0+0004 <[^>]*> srlv at,a0,at
0+0008 <[^>]*> sllv a0,a0,a1
0+000c <[^>]*> or a0,a0,at
0+0010 <[^>]*> negu at,a2
0+0014 <[^>]*> srlv at,a1,at
0+0018 <[^>]*> sllv a0,a1,a2
0+001c <[^>]*> or a0,a0,at
0+0020 <[^>]*> sll at,a0,0x1
0+0024 <[^>]*> srl a0,a0,0x1f
0+0028 <[^>]*> or a0,a0,at
0+002c <[^>]*> sll at,a1,0x1
0+0030 <[^>]*> srl a0,a1,0x1f
0+0034 <[^>]*> or a0,a0,at
0+0038 <[^>]*> srl a0,a1,0x0
0+003c <[^>]*> negu at,a1
0+0040 <[^>]*> sllv at,a0,at
0+0044 <[^>]*> srlv a0,a0,a1
0+0048 <[^>]*> or a0,a0,at
0+004c <[^>]*> negu at,a2
0+0050 <[^>]*> sllv at,a1,at
0+0054 <[^>]*> srlv a0,a1,a2
0+0058 <[^>]*> or a0,a0,at
0+005c <[^>]*> srl at,a0,0x1
0+0060 <[^>]*> sll a0,a0,0x1f
0+0064 <[^>]*> or a0,a0,at
0+0068 <[^>]*> srl at,a1,0x1
0+006c <[^>]*> sll a0,a1,0x1f
0+0070 <[^>]*> or a0,a0,at
0+0074 <[^>]*> srl a0,a1,0x0
...

View file

@ -0,0 +1,15 @@
# Source file used to test the rol and ror macros.
foo:
rol $4,$5
rol $4,$5,$6
rol $4,1
rol $4,$5,1
rol $4,$5,0
ror $4,$5
ror $4,$5,$6
ror $4,1
ror $4,$5,1
ror $4,$5,0
.space 8

View file

@ -0,0 +1,17 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 rotate
# Test the and macro.
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> rol r4,r4,r4
0+0004 <[^>]*> roli r4,r4,31
0+0008 <[^>]*> ror r4,r4,r4
0+000c <[^>]*> sll r4,r4,r4
0+0010 <[^>]*> slli r4,r4,24
0+0014 <[^>]*> sra r4,r4,r4
0+0018 <[^>]*> srai r4,r4,10
0+001c <[^>]*> srl r4,r4,r4
0+0020 <[^>]*> srli r4,r4,5

View file

@ -0,0 +1,13 @@
# test Nios II rotate instructions
.text
foo:
rol r4,r4,r4
roli r4,r4,31
ror r4,r4,r4
sll r4,r4,r4
slli r4,r4,24
sra r4,r4,r4
srai r4,r4,10
srl r4,r4,r4
srli r4,r4,5

View file

@ -0,0 +1,196 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 stb
# Test the ld instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> stb r4,0\(zero\)
0+0004 <[^>]*> stb r4,4\(zero\)
0+0008 <[^>]*> stb r4,32764\(zero\)
0+000c <[^>]*> stb r4,-32768\(zero\)
0+0010 <[^>]*> stb r4,0\(r5\)
0+0014 <[^>]*> stb r4,4\(r5\)
0+0018 <[^>]*> stb r4,32764\(r5\)
0+001c <[^>]*> stb r4,-32768\(r5\)
0+0020 <[^>]*> stb r4,0\(zero\)
[ ]*20: R_NIOS2_S16 .data
0+0024 <[^>]*> stb r4,0\(zero\)
[ ]*24: R_NIOS2_S16 big_external_data_label
0+0028 <[^>]*> stb r4,0\(zero\)
[ ]*28: R_NIOS2_S16 small_external_data_label
0+002c <[^>]*> stb r4,0\(zero\)
[ ]*2c: R_NIOS2_S16 big_external_common
0+0030 <[^>]*> stb r4,0\(zero\)
[ ]*30: R_NIOS2_S16 small_external_common
0+0034 <[^>]*> stb r4,0\(zero\)
[ ]*34: R_NIOS2_S16 .bss
0+0038 <[^>]*> stb r4,0\(zero\)
[ ]*38: R_NIOS2_S16 .bss\+0x4000
0+003c <[^>]*> stb r4,0\(zero\)
[ ]*3c: R_NIOS2_S16 .data\+0x4
0+0040 <[^>]*> stb r4,0\(zero\)
[ ]*40: R_NIOS2_S16 big_external_data_label\+0x4
0+0044 <[^>]*> stb r4,0\(zero\)
[ ]*44: R_NIOS2_S16 small_external_data_label\+0x4
0+0048 <[^>]*> stb r4,0\(zero\)
[ ]*48: R_NIOS2_S16 big_external_common\+0x4
0+004c <[^>]*> stb r4,0\(zero\)
[ ]*4c: R_NIOS2_S16 small_external_common\+0x4
0+0050 <[^>]*> stb r4,0\(zero\)
[ ]*50: R_NIOS2_S16 .bss\+0x4
0+0054 <[^>]*> stb r4,0\(zero\)
[ ]*54: R_NIOS2_S16 .bss\+0x4004
0+0058 <[^>]*> stb r4,0\(zero\)
[ ]*58: R_NIOS2_S16 .data-0x8000
0+005c <[^>]*> stb r4,0\(zero\)
[ ]*5c: R_NIOS2_S16 big_external_data_label-0x8000
0+0060 <[^>]*> stb r4,0\(zero\)
[ ]*60: R_NIOS2_S16 small_external_data_label-0x8000
0+0064 <[^>]*> stb r4,0\(zero\)
[ ]*64: R_NIOS2_S16 big_external_common-0x8000
0+0068 <[^>]*> stb r4,0\(zero\)
[ ]*68: R_NIOS2_S16 small_external_common-0x8000
0+006c <[^>]*> stb r4,0\(zero\)
[ ]*6c: R_NIOS2_S16 .bss-0x8000
0+0070 <[^>]*> stb r4,0\(zero\)
[ ]*70: R_NIOS2_S16 .bss-0x4000
0+0074 <[^>]*> stb r4,0\(zero\)
[ ]*74: R_NIOS2_S16 .data\+0x10000
0+0078 <[^>]*> stb r4,0\(r5\)
[ ]*78: R_NIOS2_S16 .data
0+007c <[^>]*> stb r4,0\(r5\)
[ ]*7c: R_NIOS2_S16 big_external_data_label
0+0080 <[^>]*> stb r4,0\(r5\)
[ ]*80: R_NIOS2_S16 small_external_data_label
0+0084 <[^>]*> stb r4,0\(r5\)
[ ]*84: R_NIOS2_S16 big_external_common
0+0088 <[^>]*> stb r4,0\(r5\)
[ ]*88: R_NIOS2_S16 small_external_common
0+008c <[^>]*> stb r4,0\(r5\)
[ ]*8c: R_NIOS2_S16 .bss
0+0090 <[^>]*> stb r4,0\(r5\)
[ ]*90: R_NIOS2_S16 .bss\+0x4000
0+0094 <[^>]*> stb r4,0\(r5\)
[ ]*94: R_NIOS2_S16 .data\+0x4
0+0098 <[^>]*> stb r4,0\(r5\)
[ ]*98: R_NIOS2_S16 big_external_data_label\+0x4
0+009c <[^>]*> stb r4,0\(r5\)
[ ]*9c: R_NIOS2_S16 small_external_data_label\+0x4
0+00a0 <[^>]*> stb r4,0\(r5\)
[ ]*a0: R_NIOS2_S16 big_external_common\+0x4
0+00a4 <[^>]*> stb r4,0\(r5\)
[ ]*a4: R_NIOS2_S16 small_external_common\+0x4
0+00a8 <[^>]*> stb r4,0\(r5\)
[ ]*a8: R_NIOS2_S16 .bss\+0x4
0+00ac <[^>]*> stb r4,0\(r5\)
[ ]*ac: R_NIOS2_S16 .bss\+0x4004
0+00b0 <[^>]*> stb r4,0\(r5\)
[ ]*b0: R_NIOS2_S16 .data-0x8000
0+00b4 <[^>]*> stb r4,0\(r5\)
[ ]*b4: R_NIOS2_S16 big_external_data_label-0x8000
0+00b8 <[^>]*> stb r4,0\(r5\)
[ ]*b8: R_NIOS2_S16 small_external_data_label-0x8000
0+00bc <[^>]*> stb r4,0\(r5\)
[ ]*bc: R_NIOS2_S16 big_external_common-0x8000
0+00c0 <[^>]*> stb r4,0\(r5\)
[ ]*c0: R_NIOS2_S16 small_external_common-0x8000
0+00c4 <[^>]*> stb r4,0\(r5\)
[ ]*c4: R_NIOS2_S16 .bss-0x8000
0+00c8 <[^>]*> stb r4,0\(r5\)
[ ]*c8: R_NIOS2_S16 .bss-0x4000
0+00cc <[^>]*> stbio r4,0\(zero\)
0+00d0 <[^>]*> stbio r4,4\(zero\)
0+00d4 <[^>]*> stbio r4,32764\(zero\)
0+00d8 <[^>]*> stbio r4,-32768\(zero\)
0+00dc <[^>]*> stbio r4,0\(r5\)
0+00e0 <[^>]*> stbio r4,4\(r5\)
0+00e4 <[^>]*> stbio r4,32764\(r5\)
0+00e8 <[^>]*> stbio r4,-32768\(r5\)
0+00ec <[^>]*> stbio r4,0\(zero\)
[ ]*ec: R_NIOS2_S16 .data
0+00f0 <[^>]*> stbio r4,0\(zero\)
[ ]*f0: R_NIOS2_S16 big_external_data_label
0+00f4 <[^>]*> stbio r4,0\(zero\)
[ ]*f4: R_NIOS2_S16 small_external_data_label
0+00f8 <[^>]*> stbio r4,0\(zero\)
[ ]*f8: R_NIOS2_S16 big_external_common
0+00fc <[^>]*> stbio r4,0\(zero\)
[ ]*fc: R_NIOS2_S16 small_external_common
0+0100 <[^>]*> stbio r4,0\(zero\)
[ ]*100: R_NIOS2_S16 .bss
0+0104 <[^>]*> stbio r4,0\(zero\)
[ ]*104: R_NIOS2_S16 .bss\+0x4000
0+0108 <[^>]*> stbio r4,0\(zero\)
[ ]*108: R_NIOS2_S16 .data\+0x4
0+010c <[^>]*> stbio r4,0\(zero\)
[ ]*10c: R_NIOS2_S16 big_external_data_label\+0x4
0+0110 <[^>]*> stbio r4,0\(zero\)
[ ]*110: R_NIOS2_S16 small_external_data_label\+0x4
0+0114 <[^>]*> stbio r4,0\(zero\)
[ ]*114: R_NIOS2_S16 big_external_common\+0x4
0+0118 <[^>]*> stbio r4,0\(zero\)
[ ]*118: R_NIOS2_S16 small_external_common\+0x4
0+011c <[^>]*> stbio r4,0\(zero\)
[ ]*11c: R_NIOS2_S16 .bss\+0x4
0+0120 <[^>]*> stbio r4,0\(zero\)
[ ]*120: R_NIOS2_S16 .bss\+0x4004
0+0124 <[^>]*> stbio r4,0\(zero\)
[ ]*124: R_NIOS2_S16 .data-0x8000
0+0128 <[^>]*> stbio r4,0\(zero\)
[ ]*128: R_NIOS2_S16 big_external_data_label-0x8000
0+012c <[^>]*> stbio r4,0\(zero\)
[ ]*12c: R_NIOS2_S16 small_external_data_label-0x8000
0+0130 <[^>]*> stbio r4,0\(zero\)
[ ]*130: R_NIOS2_S16 big_external_common-0x8000
0+0134 <[^>]*> stbio r4,0\(zero\)
[ ]*134: R_NIOS2_S16 small_external_common-0x8000
0+0138 <[^>]*> stbio r4,0\(zero\)
[ ]*138: R_NIOS2_S16 .bss-0x8000
0+013c <[^>]*> stbio r4,0\(zero\)
[ ]*13c: R_NIOS2_S16 .bss-0x4000
0+0140 <[^>]*> stbio r4,0\(zero\)
[ ]*140: R_NIOS2_S16 .data\+0x10000
0+0144 <[^>]*> stbio r4,0\(r5\)
[ ]*144: R_NIOS2_S16 .data
0+0148 <[^>]*> stbio r4,0\(r5\)
[ ]*148: R_NIOS2_S16 big_external_data_label
0+014c <[^>]*> stbio r4,0\(r5\)
[ ]*14c: R_NIOS2_S16 small_external_data_label
0+0150 <[^>]*> stbio r4,0\(r5\)
[ ]*150: R_NIOS2_S16 big_external_common
0+0154 <[^>]*> stbio r4,0\(r5\)
[ ]*154: R_NIOS2_S16 small_external_common
0+0158 <[^>]*> stbio r4,0\(r5\)
[ ]*158: R_NIOS2_S16 .bss
0+015c <[^>]*> stbio r4,0\(r5\)
[ ]*15c: R_NIOS2_S16 .bss\+0x4000
0+0160 <[^>]*> stbio r4,0\(r5\)
[ ]*160: R_NIOS2_S16 .data\+0x4
0+0164 <[^>]*> stbio r4,0\(r5\)
[ ]*164: R_NIOS2_S16 big_external_data_label\+0x4
0+0168 <[^>]*> stbio r4,0\(r5\)
[ ]*168: R_NIOS2_S16 small_external_data_label\+0x4
0+016c <[^>]*> stbio r4,0\(r5\)
[ ]*16c: R_NIOS2_S16 big_external_common\+0x4
0+0170 <[^>]*> stbio r4,0\(r5\)
[ ]*170: R_NIOS2_S16 small_external_common\+0x4
0+0174 <[^>]*> stbio r4,0\(r5\)
[ ]*174: R_NIOS2_S16 .bss\+0x4
0+0178 <[^>]*> stbio r4,0\(r5\)
[ ]*178: R_NIOS2_S16 .bss\+0x4004
0+017c <[^>]*> stbio r4,0\(r5\)
[ ]*17c: R_NIOS2_S16 .data-0x8000
0+0180 <[^>]*> stbio r4,0\(r5\)
[ ]*180: R_NIOS2_S16 big_external_data_label-0x8000
0+0184 <[^>]*> stbio r4,0\(r5\)
[ ]*184: R_NIOS2_S16 small_external_data_label-0x8000
0+0188 <[^>]*> stbio r4,0\(r5\)
[ ]*188: R_NIOS2_S16 big_external_common-0x8000
0+018c <[^>]*> stbio r4,0\(r5\)
[ ]*18c: R_NIOS2_S16 small_external_common-0x8000
0+0190 <[^>]*> stbio r4,0\(r5\)
[ ]*190: R_NIOS2_S16 .bss-0x8000
0+0194 <[^>]*> stbio r4,0\(r5\)
[ ]*194: R_NIOS2_S16 .bss-0x4000

View file

@ -0,0 +1,117 @@
.data
data_label:
.extern big_external_data_label,0x4000
.extern small_external_data_label,4
.comm big_external_common,0x4000
.comm small_external_common,4
.lcomm big_local_common,0x4000
.lcomm small_local_common,4
# the small symbols should have space allocated in the sbss section
# but this is not yet supported in the assembler, so space is allocated
# in the .bss section and the relocations are not gp-relative. this will
# be updated when gp-relative relocations are added
.text
stb r4,0(r0)
stb r4,4(r0)
stb r4,0x7ffc(r0)
stb r4,-0x8000(r0)
stb r4,0(r5)
stb r4,4(r5)
stb r4,0x7ffc(r5)
stb r4,-0x8000(r5)
stb r4,data_label(r0)
stb r4,big_external_data_label(r0)
stb r4,small_external_data_label(r0)
stb r4,big_external_common(r0)
stb r4,small_external_common(r0)
stb r4,big_local_common(r0)
stb r4,small_local_common(r0)
stb r4,data_label+4(r0)
stb r4,big_external_data_label+4(r0)
stb r4,small_external_data_label+4(r0)
stb r4,big_external_common+4(r0)
stb r4,small_external_common+4(r0)
stb r4,big_local_common+4(r0)
stb r4,small_local_common+4(r0)
stb r4,data_label-0x8000(r0)
stb r4,big_external_data_label-0x8000(r0)
stb r4,small_external_data_label-0x8000(r0)
stb r4,big_external_common-0x8000(r0)
stb r4,small_external_common-0x8000(r0)
stb r4,big_local_common-0x8000(r0)
stb r4,small_local_common-0x8000(r0)
stb r4,data_label+0x10000(r0)
stb r4,data_label(r5)
stb r4,big_external_data_label(r5)
stb r4,small_external_data_label(r5)
stb r4,big_external_common(r5)
stb r4,small_external_common(r5)
stb r4,big_local_common(r5)
stb r4,small_local_common(r5)
stb r4,data_label+4(r5)
stb r4,big_external_data_label+4(r5)
stb r4,small_external_data_label+4(r5)
stb r4,big_external_common+4(r5)
stb r4,small_external_common+4(r5)
stb r4,big_local_common+4(r5)
stb r4,small_local_common+4(r5)
stb r4,data_label-0x8000(r5)
stb r4,big_external_data_label-0x8000(r5)
stb r4,small_external_data_label-0x8000(r5)
stb r4,big_external_common-0x8000(r5)
stb r4,small_external_common-0x8000(r5)
stb r4,big_local_common-0x8000(r5)
stb r4,small_local_common-0x8000(r5)
stbio r4,0(r0)
stbio r4,4(r0)
stbio r4,0x7ffc(r0)
stbio r4,-0x8000(r0)
stbio r4,0(r5)
stbio r4,4(r5)
stbio r4,0x7ffc(r5)
stbio r4,-0x8000(r5)
stbio r4,data_label(r0)
stbio r4,big_external_data_label(r0)
stbio r4,small_external_data_label(r0)
stbio r4,big_external_common(r0)
stbio r4,small_external_common(r0)
stbio r4,big_local_common(r0)
stbio r4,small_local_common(r0)
stbio r4,data_label+4(r0)
stbio r4,big_external_data_label+4(r0)
stbio r4,small_external_data_label+4(r0)
stbio r4,big_external_common+4(r0)
stbio r4,small_external_common+4(r0)
stbio r4,big_local_common+4(r0)
stbio r4,small_local_common+4(r0)
stbio r4,data_label-0x8000(r0)
stbio r4,big_external_data_label-0x8000(r0)
stbio r4,small_external_data_label-0x8000(r0)
stbio r4,big_external_common-0x8000(r0)
stbio r4,small_external_common-0x8000(r0)
stbio r4,big_local_common-0x8000(r0)
stbio r4,small_local_common-0x8000(r0)
stbio r4,data_label+0x10000(r0)
stbio r4,data_label(r5)
stbio r4,big_external_data_label(r5)
stbio r4,small_external_data_label(r5)
stbio r4,big_external_common(r5)
stbio r4,small_external_common(r5)
stbio r4,big_local_common(r5)
stbio r4,small_local_common(r5)
stbio r4,data_label+4(r5)
stbio r4,big_external_data_label+4(r5)
stbio r4,small_external_data_label+4(r5)
stbio r4,big_external_common+4(r5)
stbio r4,small_external_common+4(r5)
stbio r4,big_local_common+4(r5)
stbio r4,small_local_common+4(r5)
stbio r4,data_label-0x8000(r5)
stbio r4,big_external_data_label-0x8000(r5)
stbio r4,small_external_data_label-0x8000(r5)
stbio r4,big_external_common-0x8000(r5)
stbio r4,small_external_common-0x8000(r5)
stbio r4,big_local_common-0x8000(r5)
stbio r4,small_local_common-0x8000(r5)

View file

@ -0,0 +1,196 @@
#objdump: -dr --prefix-addresses
#name: NIOS2 sth
# Test the ld instruction
.*: +file format elf32-littlenios2
Disassembly of section .text:
0+0000 <[^>]*> sth r4,0\(zero\)
0+0004 <[^>]*> sth r4,4\(zero\)
0+0008 <[^>]*> sth r4,32764\(zero\)
0+000c <[^>]*> sth r4,-32768\(zero\)
0+0010 <[^>]*> sth r4,0\(r5\)
0+0014 <[^>]*> sth r4,4\(r5\)
0+0018 <[^>]*> sth r4,32764\(r5\)
0+001c <[^>]*> sth r4,-32768\(r5\)
0+0020 <[^>]*> sth r4,0\(zero\)
[ ]*20: R_NIOS2_S16 .data
0+0024 <[^>]*> sth r4,0\(zero\)
[ ]*24: R_NIOS2_S16 big_external_data_label
0+0028 <[^>]*> sth r4,0\(zero\)
[ ]*28: R_NIOS2_S16 small_external_data_label
0+002c <[^>]*> sth r4,0\(zero\)
[ ]*2c: R_NIOS2_S16 big_external_common
0+0030 <[^>]*> sth r4,0\(zero\)
[ ]*30: R_NIOS2_S16 small_external_common
0+0034 <[^>]*> sth r4,0\(zero\)
[ ]*34: R_NIOS2_S16 .bss
0+0038 <[^>]*> sth r4,0\(zero\)
[ ]*38: R_NIOS2_S16 .bss\+0x4000
0+003c <[^>]*> sth r4,0\(zero\)
[ ]*3c: R_NIOS2_S16 .data\+0x4
0+0040 <[^>]*> sth r4,0\(zero\)
[ ]*40: R_NIOS2_S16 big_external_data_label\+0x4
0+0044 <[^>]*> sth r4,0\(zero\)
[ ]*44: R_NIOS2_S16 small_external_data_label\+0x4
0+0048 <[^>]*> sth r4,0\(zero\)
[ ]*48: R_NIOS2_S16 big_external_common\+0x4
0+004c <[^>]*> sth r4,0\(zero\)
[ ]*4c: R_NIOS2_S16 small_external_common\+0x4
0+0050 <[^>]*> sth r4,0\(zero\)
[ ]*50: R_NIOS2_S16 .bss\+0x4
0+0054 <[^>]*> sth r4,0\(zero\)
[ ]*54: R_NIOS2_S16 .bss\+0x4004
0+0058 <[^>]*> sth r4,0\(zero\)
[ ]*58: R_NIOS2_S16 .data-0x8000
0+005c <[^>]*> sth r4,0\(zero\)
[ ]*5c: R_NIOS2_S16 big_external_data_label-0x8000
0+0060 <[^>]*> sth r4,0\(zero\)
[ ]*60: R_NIOS2_S16 small_external_data_label-0x8000
0+0064 <[^>]*> sth r4,0\(zero\)
[ ]*64: R_NIOS2_S16 big_external_common-0x8000
0+0068 <[^>]*> sth r4,0\(zero\)
[ ]*68: R_NIOS2_S16 small_external_common-0x8000
0+006c <[^>]*> sth r4,0\(zero\)
[ ]*6c: R_NIOS2_S16 .bss-0x8000
0+0070 <[^>]*> sth r4,0\(zero\)
[ ]*70: R_NIOS2_S16 .bss-0x4000
0+0074 <[^>]*> sth r4,0\(zero\)
[ ]*74: R_NIOS2_S16 .data\+0x10000
0+0078 <[^>]*> sth r4,0\(r5\)
[ ]*78: R_NIOS2_S16 .data
0+007c <[^>]*> sth r4,0\(r5\)
[ ]*7c: R_NIOS2_S16 big_external_data_label
0+0080 <[^>]*> sth r4,0\(r5\)
[ ]*80: R_NIOS2_S16 small_external_data_label
0+0084 <[^>]*> sth r4,0\(r5\)
[ ]*84: R_NIOS2_S16 big_external_common
0+0088 <[^>]*> sth r4,0\(r5\)
[ ]*88: R_NIOS2_S16 small_external_common
0+008c <[^>]*> sth r4,0\(r5\)
[ ]*8c: R_NIOS2_S16 .bss
0+0090 <[^>]*> sth r4,0\(r5\)
[ ]*90: R_NIOS2_S16 .bss\+0x4000
0+0094 <[^>]*> sth r4,0\(r5\)
[ ]*94: R_NIOS2_S16 .data\+0x4
0+0098 <[^>]*> sth r4,0\(r5\)
[ ]*98: R_NIOS2_S16 big_external_data_label\+0x4
0+009c <[^>]*> sth r4,0\(r5\)
[ ]*9c: R_NIOS2_S16 small_external_data_label\+0x4
0+00a0 <[^>]*> sth r4,0\(r5\)
[ ]*a0: R_NIOS2_S16 big_external_common\+0x4
0+00a4 <[^>]*> sth r4,0\(r5\)
[ ]*a4: R_NIOS2_S16 small_external_common\+0x4
0+00a8 <[^>]*> sth r4,0\(r5\)
[ ]*a8: R_NIOS2_S16 .bss\+0x4
0+00ac <[^>]*> sth r4,0\(r5\)
[ ]*ac: R_NIOS2_S16 .bss\+0x4004
0+00b0 <[^>]*> sth r4,0\(r5\)
[ ]*b0: R_NIOS2_S16 .data-0x8000
0+00b4 <[^>]*> sth r4,0\(r5\)
[ ]*b4: R_NIOS2_S16 big_external_data_label-0x8000
0+00b8 <[^>]*> sth r4,0\(r5\)
[ ]*b8: R_NIOS2_S16 small_external_data_label-0x8000
0+00bc <[^>]*> sth r4,0\(r5\)
[ ]*bc: R_NIOS2_S16 big_external_common-0x8000
0+00c0 <[^>]*> sth r4,0\(r5\)
[ ]*c0: R_NIOS2_S16 small_external_common-0x8000
0+00c4 <[^>]*> sth r4,0\(r5\)
[ ]*c4: R_NIOS2_S16 .bss-0x8000
0+00c8 <[^>]*> sth r4,0\(r5\)
[ ]*c8: R_NIOS2_S16 .bss-0x4000
0+00cc <[^>]*> sthio r4,0\(zero\)
0+00d0 <[^>]*> sthio r4,4\(zero\)
0+00d4 <[^>]*> sthio r4,32764\(zero\)
0+00d8 <[^>]*> sthio r4,-32768\(zero\)
0+00dc <[^>]*> sthio r4,0\(r5\)
0+00e0 <[^>]*> sthio r4,4\(r5\)
0+00e4 <[^>]*> sthio r4,32764\(r5\)
0+00e8 <[^>]*> sthio r4,-32768\(r5\)
0+00ec <[^>]*> sthio r4,0\(zero\)
[ ]*ec: R_NIOS2_S16 .data
0+00f0 <[^>]*> sthio r4,0\(zero\)
[ ]*f0: R_NIOS2_S16 big_external_data_label
0+00f4 <[^>]*> sthio r4,0\(zero\)
[ ]*f4: R_NIOS2_S16 small_external_data_label
0+00f8 <[^>]*> sthio r4,0\(zero\)
[ ]*f8: R_NIOS2_S16 big_external_common
0+00fc <[^>]*> sthio r4,0\(zero\)
[ ]*fc: R_NIOS2_S16 small_external_common
0+0100 <[^>]*> sthio r4,0\(zero\)
[ ]*100: R_NIOS2_S16 .bss
0+0104 <[^>]*> sthio r4,0\(zero\)
[ ]*104: R_NIOS2_S16 .bss\+0x4000
0+0108 <[^>]*> sthio r4,0\(zero\)
[ ]*108: R_NIOS2_S16 .data\+0x4
0+010c <[^>]*> sthio r4,0\(zero\)
[ ]*10c: R_NIOS2_S16 big_external_data_label\+0x4
0+0110 <[^>]*> sthio r4,0\(zero\)
[ ]*110: R_NIOS2_S16 small_external_data_label\+0x4
0+0114 <[^>]*> sthio r4,0\(zero\)
[ ]*114: R_NIOS2_S16 big_external_common\+0x4
0+0118 <[^>]*> sthio r4,0\(zero\)
[ ]*118: R_NIOS2_S16 small_external_common\+0x4
0+011c <[^>]*> sthio r4,0\(zero\)
[ ]*11c: R_NIOS2_S16 .bss\+0x4
0+0120 <[^>]*> sthio r4,0\(zero\)
[ ]*120: R_NIOS2_S16 .bss\+0x4004
0+0124 <[^>]*> sthio r4,0\(zero\)
[ ]*124: R_NIOS2_S16 .data-0x8000
0+0128 <[^>]*> sthio r4,0\(zero\)
[ ]*128: R_NIOS2_S16 big_external_data_label-0x8000
0+012c <[^>]*> sthio r4,0\(zero\)
[ ]*12c: R_NIOS2_S16 small_external_data_label-0x8000
0+0130 <[^>]*> sthio r4,0\(zero\)
[ ]*130: R_NIOS2_S16 big_external_common-0x8000
0+0134 <[^>]*> sthio r4,0\(zero\)
[ ]*134: R_NIOS2_S16 small_external_common-0x8000
0+0138 <[^>]*> sthio r4,0\(zero\)
[ ]*138: R_NIOS2_S16 .bss-0x8000
0+013c <[^>]*> sthio r4,0\(zero\)
[ ]*13c: R_NIOS2_S16 .bss-0x4000
0+0140 <[^>]*> sthio r4,0\(zero\)
[ ]*140: R_NIOS2_S16 .data\+0x10000
0+0144 <[^>]*> sthio r4,0\(r5\)
[ ]*144: R_NIOS2_S16 .data
0+0148 <[^>]*> sthio r4,0\(r5\)
[ ]*148: R_NIOS2_S16 big_external_data_label
0+014c <[^>]*> sthio r4,0\(r5\)
[ ]*14c: R_NIOS2_S16 small_external_data_label
0+0150 <[^>]*> sthio r4,0\(r5\)
[ ]*150: R_NIOS2_S16 big_external_common
0+0154 <[^>]*> sthio r4,0\(r5\)
[ ]*154: R_NIOS2_S16 small_external_common
0+0158 <[^>]*> sthio r4,0\(r5\)
[ ]*158: R_NIOS2_S16 .bss
0+015c <[^>]*> sthio r4,0\(r5\)
[ ]*15c: R_NIOS2_S16 .bss\+0x4000
0+0160 <[^>]*> sthio r4,0\(r5\)
[ ]*160: R_NIOS2_S16 .data\+0x4
0+0164 <[^>]*> sthio r4,0\(r5\)
[ ]*164: R_NIOS2_S16 big_external_data_label\+0x4
0+0168 <[^>]*> sthio r4,0\(r5\)
[ ]*168: R_NIOS2_S16 small_external_data_label\+0x4
0+016c <[^>]*> sthio r4,0\(r5\)
[ ]*16c: R_NIOS2_S16 big_external_common\+0x4
0+0170 <[^>]*> sthio r4,0\(r5\)
[ ]*170: R_NIOS2_S16 small_external_common\+0x4
0+0174 <[^>]*> sthio r4,0\(r5\)
[ ]*174: R_NIOS2_S16 .bss\+0x4
0+0178 <[^>]*> sthio r4,0\(r5\)
[ ]*178: R_NIOS2_S16 .bss\+0x4004
0+017c <[^>]*> sthio r4,0\(r5\)
[ ]*17c: R_NIOS2_S16 .data-0x8000
0+0180 <[^>]*> sthio r4,0\(r5\)
[ ]*180: R_NIOS2_S16 big_external_data_label-0x8000
0+0184 <[^>]*> sthio r4,0\(r5\)
[ ]*184: R_NIOS2_S16 small_external_data_label-0x8000
0+0188 <[^>]*> sthio r4,0\(r5\)
[ ]*188: R_NIOS2_S16 big_external_common-0x8000
0+018c <[^>]*> sthio r4,0\(r5\)
[ ]*18c: R_NIOS2_S16 small_external_common-0x8000
0+0190 <[^>]*> sthio r4,0\(r5\)
[ ]*190: R_NIOS2_S16 .bss-0x8000
0+0194 <[^>]*> sthio r4,0\(r5\)
[ ]*194: R_NIOS2_S16 .bss-0x4000

Some files were not shown because too many files have changed in this diff Show more