From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 112987 invoked by alias); 9 Dec 2016 18:08:27 -0000 Mailing-List: contact binutils-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: binutils-owner@sourceware.org Received: (qmail 112376 invoked by uid 89); 9 Dec 2016 18:08:27 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,RCVD_IN_DNSWL_NONE,RP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=Friday, D*synopsys.com, sk:graham., sk:graham X-HELO: smtprelay.synopsys.com Received: from smtprelay.synopsys.com (HELO smtprelay.synopsys.com) (198.182.60.111) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 09 Dec 2016 18:08:16 +0000 Received: from mailhost.synopsys.com (mailhost1.synopsys.com [10.12.238.239]) by smtprelay.synopsys.com (Postfix) with ESMTP id E98FC10C11F6; Fri, 9 Dec 2016 10:08:14 -0800 (PST) Received: from mailhost.synopsys.com (localhost [127.0.0.1]) by mailhost.synopsys.com (Postfix) with ESMTP id CC0F9997; Fri, 9 Dec 2016 10:08:14 -0800 (PST) Received: from US01WEHTC3.internal.synopsys.com (us01wehtc3.internal.synopsys.com [10.15.84.232]) by mailhost.synopsys.com (Postfix) with ESMTP id B030F995; Fri, 9 Dec 2016 10:08:14 -0800 (PST) Received: from DE02WEHTCB.internal.synopsys.com (10.225.19.94) by US01WEHTC3.internal.synopsys.com (10.15.84.232) with Microsoft SMTP Server (TLS) id 14.3.266.1; Fri, 9 Dec 2016 10:08:14 -0800 Received: from DE02WEMBXA.internal.synopsys.com ([fe80::a014:7216:77d:d55c]) by DE02WEHTCB.internal.synopsys.com ([::1]) with mapi id 14.03.0266.001; Fri, 9 Dec 2016 19:08:12 +0100 From: Claudiu Zissulescu To: Graham Markall , "binutils@sourceware.org" CC: "andrew.burgess@embecosm.com" , "noamca@mellanox.com" , "guybe@mellanox.com" , "claudiu.zissulescu@synopsys.com" , "cupertino.miranda@synopsys.com" , "anton.kolesov@synopsys.com" , "alexey.brodkin@synopsys.com" , "vineet.gupta1@synopsys.com" Subject: RE: [PATCH] [ARC] Add new linker emulations for nps Date: Fri, 09 Dec 2016 18:08:00 -0000 Message-ID: <098ECE41A0A6114BB2A07F1EC238DE89661BE0AD@de02wembxa.internal.synopsys.com> References: <1481306322-18618-1-git-send-email-graham.markall@embecosm.com> In-Reply-To: <1481306322-18618-1-git-send-email-graham.markall@embecosm.com> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-SW-Source: 2016-12/txt/msg00171.txt.bz2 Hi, Just a very quick feedback, you can drop the profiler related files, as the= current tools cannot handle profiling for uClibc linux base systems. Moreo= ver, I've proposed a gcc patch which will remove entirely the need for spec= ial linker emulation files. Best, Claudiu ________________________________________ From: Graham Markall [graham.markall@embecosm.com] Sent: Friday, December 09, 2016 6:58 PM To: binutils@sourceware.org Cc: andrew.burgess@embecosm.com; noamca@mellanox.com; guybe@mellanox.com; c= laudiu.zissulescu@synopsys.com; cupertino.miranda@synopsys.com; anton.koles= ov@synopsys.com; alexey.brodkin@synopsys.com; vineet.gupta1@synopsys.com; G= raham Markall Subject: [PATCH] [ARC] Add new linker emulations for nps Following responses to Andrew's RFC in https://sourceware.org/ml/binutils/2016-11/msg00384.html, this patch adds a new linker emulation for nps, which I believe addresses the comments received. The emulation uses makes use of the scripts for the arclinux emulation in order to avoid diverging from it, and adds the additional sections by setting the OTHER_SECTIONS variable. There was a suggestion from Anton Kolesov that the symbols could be better-named, e.g. to use names such as "_nps400_cmem_start" rather than "_cmem_start". Although this would be preferable, these names are already in use by users of Mellanox's binutils fork. However, as there is now a separate emulation, these symbols won't collide for any other Synopsys customers who might want to have a symbol named, e.g. "_cmem_start". Tested with ARC big- and little-endian targets on an x86_64 host. Proposed commit message follows: The arc700 nps variant uses some specific named sections to facilitate its CMEM based instructions, which operate on memory regions fixed at specific addresses. This commit adds the arclinux_nps and arclinux_nps_prof emulations, which are based on the arclinux and arclinux_prof emulations. The new emulations use the OTHER_SECTIONS variable in the emulation parameters script to provide symbols mapping to various locations in the CMEM space on nps. The accompanying test ensures that all symbols are provided at the correct address in the linker script. ld/ChangeLog: * Makefile.am: Add earclinux_nps.c and earclinux_nps_prof targets and add to ALL_EMULATION_SOURCES. * Makefile.in: Likewise, regenerated. * configure.tgt: Add arclinux_nps and arclinux_nps_prof as extra emulations for arc*-*-elf* and arc*-*-linux*. * emulparams/arc-nps.sh: New file. * emulparams/arclinux_nps.sh: New file. * emulparams/arclinux_nps_prof.sh: New file. * testsuite/ld-arc/arclinux-nps.d, * testsuite/ld-arc/arclinux-nps.s: New test. --- ld/ChangeLog | 14 +++++++ ld/Makefile.am | 12 ++++++ ld/Makefile.in | 14 +++++++ ld/configure.tgt | 4 +- ld/emulparams/arc-nps.sh | 78 ++++++++++++++++++++++++++++++++++= ++++ ld/emulparams/arclinux_nps.sh | 3 ++ ld/emulparams/arclinux_nps_prof.sh | 3 ++ ld/testsuite/ld-arc/arclinux-nps.d | 50 ++++++++++++++++++++++++ ld/testsuite/ld-arc/arclinux-nps.s | 46 ++++++++++++++++++++++ 9 files changed, 222 insertions(+), 2 deletions(-) create mode 100644 ld/emulparams/arc-nps.sh create mode 100644 ld/emulparams/arclinux_nps.sh create mode 100644 ld/emulparams/arclinux_nps_prof.sh create mode 100644 ld/testsuite/ld-arc/arclinux-nps.d create mode 100644 ld/testsuite/ld-arc/arclinux-nps.s diff --git a/ld/Makefile.am b/ld/Makefile.am index ac908bc..ff70761 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -171,6 +171,8 @@ ALL_EMULATION_SOURCES =3D \ earcelf.c \ earcelf_prof.c \ earclinux.c \ + earclinux_nps.c \ + earclinux_nps_prof.c \ earclinux_prof.c \ earm_epoc_pe.c \ earm_wince_pe.c \ @@ -737,10 +739,20 @@ earclinux.c: $(srcdir)/emulparams/arclinux.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} +earclinux_nps.c: $(srcdir)/emulparams/arclinux_nps.sh \ + $(srcdir)/emulparams/arc-nps.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ + $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} + earclinux_prof.c: $(srcdir)/emulparams/arclinux_prof.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} +earclinux_nps_prof.c: $(srcdir)/emulparams/arclinux_nps_prof.sh \ + $(srcdir)/emulparams/arc-nps.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ + $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} + earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \ $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS} diff --git a/ld/Makefile.in b/ld/Makefile.in index 46c0302..4f27edf 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -540,6 +540,8 @@ ALL_EMULATION_SOURCES =3D \ earcelf.c \ earcelf_prof.c \ earclinux.c \ + earclinux_nps.c \ + earclinux_nps_prof.c \ earclinux_prof.c \ earm_epoc_pe.c \ earm_wince_pe.c \ @@ -1179,6 +1181,8 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcelf_prof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps.Po@am__quot= e@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_nps_prof.Po@am_= _quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earclinux_prof.Po@am__quo= te@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/earcv2elfx.Po@am__quote@ @@ -2330,10 +2334,20 @@ earclinux.c: $(srcdir)/emulparams/arclinux.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} +earclinux_nps.c: $(srcdir)/emulparams/arclinux_nps.sh \ + $(srcdir)/emulparams/arc-nps.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ + $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} + earclinux_prof.c: $(srcdir)/emulparams/arclinux_prof.sh \ $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} +earclinux_nps_prof.c: $(srcdir)/emulparams/arclinux_nps_prof.sh \ + $(srcdir)/emulparams/arc-nps.sh \ + $(ELF_DEPS) $(srcdir)/emultempl/arclinux.em \ + $(srcdir)/scripttempl/arclinux.sc ${GEN_DEPENDS} + earm_epoc_pe.c: $(srcdir)/emulparams/arm_epoc_pe.sh \ $(srcdir)/emultempl/pe.em $(srcdir)/scripttempl/epocpe.sc ${GEN_DEPENDS} diff --git a/ld/configure.tgt b/ld/configure.tgt index b9f4782..01969b3 100644 --- a/ld/configure.tgt +++ b/ld/configure.tgt @@ -78,10 +78,10 @@ alpha*-*-openbsd*) targ_emul=3Delf64alpha ;; alpha*-*-*vms*) targ_emul=3Dalphavms ;; arc*-*-elf*) targ_emul=3Darcelf - targ_extra_emuls=3D"arcelf_prof arclinux arclinux_p= rof arcv2elf arcv2elfx" + targ_extra_emuls=3D"arcelf_prof arclinux arclinux_n= ps arclinux_nps_prof arclinux_prof arcv2elf arcv2elfx" ;; arc*-*-linux*) targ_emul=3Darclinux - targ_extra_emuls=3D"arclinux_prof arcelf arcelf_pro= f arcv2elf arcv2elfx" + targ_extra_emuls=3D"arclinux_nps arclinux_nps_prof = arclinux_prof arcelf arcelf_prof arcv2elf arcv2elfx" ;; arm-epoc-pe) targ_emul=3Darm_epoc_pe ; targ_extra_ofiles=3D"deff= ilep.o pe-dll.o" ;; arm*-*-cegcc*) targ_emul=3Darm_wince_pe ; targ_extra_ofiles=3D"def= filep.o pe-dll.o" diff --git a/ld/emulparams/arc-nps.sh b/ld/emulparams/arc-nps.sh new file mode 100644 index 0000000..615e6d5 --- /dev/null +++ b/ld/emulparams/arc-nps.sh @@ -0,0 +1,78 @@ +OTHER_SECTIONS=3D" + /* Start of symbols and sections required to support CMEM instructions + on NPS targets. */ + + PROVIDE (_cmem_start =3D ADDR (.cmem) = ); + PROVIDE (_cmem_alter_start =3D ADDR (.cmem_alter) = ); + PROVIDE (_cmem_shared_start =3D ADDR (.cmem_shared) = ); + PROVIDE (_cmem_shared_alter_start =3D ADDR (.cmem_shared_alter) = ); + PROVIDE (_fmt_slot0_start =3D ADDR (.fmt_slot0) = ); + PROVIDE (_fmt_slot1_start =3D ADDR (.fmt_slot1) = ); + PROVIDE (_fmt_slot2_start =3D ADDR (.fmt_slot2) = ); + PROVIDE (_fmt_slot3_start =3D ADDR (.fmt_slot3) = ); + PROVIDE (_fmt_slot4_start =3D ADDR (.fmt_slot4) = ); + PROVIDE (_fmt_slot5_start =3D ADDR (.fmt_slot5) = ); + PROVIDE (_fmt_slot6_start =3D ADDR (.fmt_slot6) = ); + PROVIDE (_fmt_slot7_start =3D ADDR (.fmt_slot7) = ); + PROVIDE (_fmt_slot8_start =3D ADDR (.fmt_slot8) = ); + PROVIDE (_fmt_slot9_start =3D ADDR (.fmt_slot9) = ); + PROVIDE (_fmt_slot10_start =3D ADDR (.fmt_slot10) = ); + PROVIDE (_fmt_slot11_start =3D ADDR (.fmt_slot11) = ); + PROVIDE (_fmt_slot12_start =3D ADDR (.fmt_slot12) = ); + PROVIDE (_fmt_slot13_start =3D ADDR (.fmt_slot13) = ); + PROVIDE (_fmt_slot14_start =3D ADDR (.fmt_slot14) = ); + PROVIDE (_fmt_slot15_start =3D ADDR (.fmt_slot15) = ); + + PROVIDE (_cmem_end =3D ADDR (.cmem) + SIZEO= F (.cmem) ); + PROVIDE (_cmem_alter_end =3D ADDR (.cmem_alter) + SIZEO= F (.cmem_alter) ); + PROVIDE (_cmem_shared_end =3D ADDR (.cmem_shared) + SIZEO= F (.cmem_shared) ); + PROVIDE (_cmem_shared_alter_end =3D ADDR (.cmem_shared_alter) + SIZEO= F (.cmem_shared_alter) ); + PROVIDE (_fmt_slot0_end =3D ADDR (.fmt_slot0) + SIZEO= F (.fmt_slot0) ); + PROVIDE (_fmt_slot1_end =3D ADDR (.fmt_slot1) + SIZEO= F (.fmt_slot1) ); + PROVIDE (_fmt_slot2_end =3D ADDR (.fmt_slot2) + SIZEO= F (.fmt_slot2) ); + PROVIDE (_fmt_slot3_end =3D ADDR (.fmt_slot3) + SIZEO= F (.fmt_slot3) ); + PROVIDE (_fmt_slot4_end =3D ADDR (.fmt_slot4) + SIZEO= F (.fmt_slot4) ); + PROVIDE (_fmt_slot5_end =3D ADDR (.fmt_slot5) + SIZEO= F (.fmt_slot5) ); + PROVIDE (_fmt_slot6_end =3D ADDR (.fmt_slot6) + SIZEO= F (.fmt_slot6) ); + PROVIDE (_fmt_slot7_end =3D ADDR (.fmt_slot7) + SIZEO= F (.fmt_slot7) ); + PROVIDE (_fmt_slot8_end =3D ADDR (.fmt_slot8) + SIZEO= F (.fmt_slot8) ); + PROVIDE (_fmt_slot9_end =3D ADDR (.fmt_slot9) + SIZEO= F (.fmt_slot9) ); + PROVIDE (_fmt_slot10_end =3D ADDR (.fmt_slot10) + SIZEO= F (.fmt_slot10) ); + PROVIDE (_fmt_slot11_end =3D ADDR (.fmt_slot11) + SIZEO= F (.fmt_slot11) ); + PROVIDE (_fmt_slot12_end =3D ADDR (.fmt_slot12) + SIZEO= F (.fmt_slot12) ); + PROVIDE (_fmt_slot13_end =3D ADDR (.fmt_slot13) + SIZEO= F (.fmt_slot13) ); + PROVIDE (_fmt_slot14_end =3D ADDR (.fmt_slot14) + SIZEO= F (.fmt_slot14) ); + PROVIDE (_fmt_slot15_end =3D ADDR (.fmt_slot15) + SIZEO= F (.fmt_slot15) ); + + OVERLAY 0x57f00000 : + { + .cmem { *(.cmem) } + .cmem_alter { *(.cmem_alter) } + } + + OVERLAY 0x57f08000 : + { + .cmem_shared { *(.cmem_shared) } + .cmem_shared_alter { *(.cmem_shared_alter) } + } + + .fmt_slot0 0x58000000 : { *(.fmt_slot0) } + .fmt_slot1 0x58800000 : { *(.fmt_slot1) } + .fmt_slot2 0x59000000 : { *(.fmt_slot2) } + .fmt_slot3 0x59800000 : { *(.fmt_slot3) } + .fmt_slot4 0x5a000000 : { *(.fmt_slot4) } + .fmt_slot5 0x5a800000 : { *(.fmt_slot5) } + .fmt_slot6 0x5b000000 : { *(.fmt_slot6) } + .fmt_slot7 0x5b800000 : { *(.fmt_slot7) } + .fmt_slot8 0x5c000000 : { *(.fmt_slot8) } + .fmt_slot9 0x5c800000 : { *(.fmt_slot9) } + .fmt_slot10 0x5d000000 : { *(.fmt_slot10) } + .fmt_slot11 0x5d800000 : { *(.fmt_slot11) } + .fmt_slot12 0x5e000000 : { *(.fmt_slot12) } + .fmt_slot13 0x5e800000 : { *(.fmt_slot13) } + .fmt_slot14 0x5f000000 : { *(.fmt_slot14) } + .fmt_slot15 0x5f800000 : { *(.fmt_slot15) } + + /* End of nps specific sections and symbols. */ + + ${OTHER_SECTIONS}" diff --git a/ld/emulparams/arclinux_nps.sh b/ld/emulparams/arclinux_nps.sh new file mode 100644 index 0000000..b1c6a7d --- /dev/null +++ b/ld/emulparams/arclinux_nps.sh @@ -0,0 +1,3 @@ +. ${srcdir}/emulparams/arclinux.sh +# Extend the OTHER_SECTIONS for nps. +. ${srcdir}/emulparams/arc-nps.sh diff --git a/ld/emulparams/arclinux_nps_prof.sh b/ld/emulparams/arclinux_np= s_prof.sh new file mode 100644 index 0000000..80b9db8 --- /dev/null +++ b/ld/emulparams/arclinux_nps_prof.sh @@ -0,0 +1,3 @@ +. ${srcdir}/emulparams/arclinux_prof.sh +# Extend the OTHER_SECTIONS for nps. +. ${srcdir}/emulparams/arc-nps.sh diff --git a/ld/testsuite/ld-arc/arclinux-nps.d b/ld/testsuite/ld-arc/arcli= nux-nps.d new file mode 100644 index 0000000..5ccd7fc --- /dev/null +++ b/ld/testsuite/ld-arc/arclinux-nps.d @@ -0,0 +1,50 @@ +#source: arclinux-nps.s +#as: -mnps400 +#ld: -marclinux_nps +#objdump: -dr + +.*: +file format .*arc.* + +Disassembly of section .text: + +[0-9a-f]+ <.*>: + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 5800 0000 mov r0,0x58000000 + [0-9a-f]+: 200a 0f80 5880 0000 mov r0,0x58800000 + [0-9a-f]+: 200a 0f80 5900 0000 mov r0,0x59000000 + [0-9a-f]+: 200a 0f80 5980 0000 mov r0,0x59800000 + [0-9a-f]+: 200a 0f80 5a00 0000 mov r0,0x5a000000 + [0-9a-f]+: 200a 0f80 5a80 0000 mov r0,0x5a800000 + [0-9a-f]+: 200a 0f80 5b00 0000 mov r0,0x5b000000 + [0-9a-f]+: 200a 0f80 5b80 0000 mov r0,0x5b800000 + [0-9a-f]+: 200a 0f80 5c00 0000 mov r0,0x5c000000 + [0-9a-f]+: 200a 0f80 5c80 0000 mov r0,0x5c800000 + [0-9a-f]+: 200a 0f80 5d00 0000 mov r0,0x5d000000 + [0-9a-f]+: 200a 0f80 5d80 0000 mov r0,0x5d800000 + [0-9a-f]+: 200a 0f80 5e00 0000 mov r0,0x5e000000 + [0-9a-f]+: 200a 0f80 5e80 0000 mov r0,0x5e800000 + [0-9a-f]+: 200a 0f80 5f00 0000 mov r0,0x5f000000 + [0-9a-f]+: 200a 0f80 5f80 0000 mov r0,0x5f800000 + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 0000 mov r0,0x57f00000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 57f0 8000 mov r0,0x57f08000 + [0-9a-f]+: 200a 0f80 5800 0000 mov r0,0x58000000 + [0-9a-f]+: 200a 0f80 5880 0000 mov r0,0x58800000 + [0-9a-f]+: 200a 0f80 5900 0000 mov r0,0x59000000 + [0-9a-f]+: 200a 0f80 5980 0000 mov r0,0x59800000 + [0-9a-f]+: 200a 0f80 5a00 0000 mov r0,0x5a000000 + [0-9a-f]+: 200a 0f80 5a80 0000 mov r0,0x5a800000 + [0-9a-f]+: 200a 0f80 5b00 0000 mov r0,0x5b000000 + [0-9a-f]+: 200a 0f80 5b80 0000 mov r0,0x5b800000 + [0-9a-f]+: 200a 0f80 5c00 0000 mov r0,0x5c000000 + [0-9a-f]+: 200a 0f80 5c80 0000 mov r0,0x5c800000 + [0-9a-f]+: 200a 0f80 5d00 0000 mov r0,0x5d000000 + [0-9a-f]+: 200a 0f80 5d80 0000 mov r0,0x5d800000 + [0-9a-f]+: 200a 0f80 5e00 0000 mov r0,0x5e000000 + [0-9a-f]+: 200a 0f80 5e80 0000 mov r0,0x5e800000 + [0-9a-f]+: 200a 0f80 5f00 0000 mov r0,0x5f000000 + [0-9a-f]+: 200a 0f80 5f80 0000 mov r0,0x5f800000 diff --git a/ld/testsuite/ld-arc/arclinux-nps.s b/ld/testsuite/ld-arc/arcli= nux-nps.s new file mode 100644 index 0000000..38bf897 --- /dev/null +++ b/ld/testsuite/ld-arc/arclinux-nps.s @@ -0,0 +1,46 @@ + .text + .global __start +__start: + mov r0, _cmem_start + mov r0, _cmem_alter_start + mov r0, _cmem_shared_start + mov r0, _cmem_shared_alter_start + + mov r0, _fmt_slot0_start + mov r0, _fmt_slot1_start + mov r0, _fmt_slot2_start + mov r0, _fmt_slot3_start + mov r0, _fmt_slot4_start + mov r0, _fmt_slot5_start + mov r0, _fmt_slot6_start + mov r0, _fmt_slot7_start + mov r0, _fmt_slot8_start + mov r0, _fmt_slot9_start + mov r0, _fmt_slot10_start + mov r0, _fmt_slot11_start + mov r0, _fmt_slot12_start + mov r0, _fmt_slot13_start + mov r0, _fmt_slot14_start + mov r0, _fmt_slot15_start + + mov r0, _cmem_end + mov r0, _cmem_alter_end + mov r0, _cmem_shared_end + mov r0, _cmem_shared_alter_end + + mov r0, _fmt_slot0_end + mov r0, _fmt_slot1_end + mov r0, _fmt_slot2_end + mov r0, _fmt_slot3_end + mov r0, _fmt_slot4_end + mov r0, _fmt_slot5_end + mov r0, _fmt_slot6_end + mov r0, _fmt_slot7_end + mov r0, _fmt_slot8_end + mov r0, _fmt_slot9_end + mov r0, _fmt_slot10_end + mov r0, _fmt_slot11_end + mov r0, _fmt_slot12_end + mov r0, _fmt_slot13_end + mov r0, _fmt_slot14_end + mov r0, _fmt_slot15_end -- 2.7.4