diff options
author | Nick Clifton <nickc@redhat.com> | 2015-05-05 12:45:38 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2015-05-27 13:30:19 +0200 |
commit | baa681fd38b8484b36ba24399e7c5b9acdd61e65 (patch) | |
tree | 4c243bc65e40c51a9e0dac9ce73992d644276ca7 /libgloss/msp430/memmodel.h | |
parent | 761a123a4f9de9f06b3cb8f348a5ec7d6c9a70a2 (diff) | |
download | cygnal-baa681fd38b8484b36ba24399e7c5b9acdd61e65.tar.gz cygnal-baa681fd38b8484b36ba24399e7c5b9acdd61e65.tar.bz2 cygnal-baa681fd38b8484b36ba24399e7c5b9acdd61e65.zip |
Adds support for placing MSP430 code and data into either low memory or high memory.
* msp430/msp430.ld: Delete.
* msp430/msp430F5438A-l.ld: Delete.
* msp430/msp430F5438A-s.ld: Delete.
* msp430/crt_movedata.S: Delete.
* msp430/Makefile.in (SCRIPTS): Remove msp430.ld.
(CRT_OBJS): Add crt_move_highdata.o.
* msp430/memmodel.h (START_CRT_FUNC): New macro.
(END_CRT_FUNC): New macro.
(WEAK_DEF): New macro.
* msp430/crt0.S: Use new macros.
(move_highdata): New code to initialise the .data section if it is
held in high memory.
* msp430/msp430-sim.ld (.data): Add .either.data.
(.rodata2): Move some read-only data sections here.
(.text): Add .either.text.
(.rodata): Add .either.rodata.
(.bss): Add .either.bss.
* msp430/msp430xl-sim.ld (MEMORY): Add HIROM.
(.rodata2): Move some read-only data sections here.
(.upper.data): New section. Include notes about how to initialise
it.
Diffstat (limited to 'libgloss/msp430/memmodel.h')
-rw-r--r-- | libgloss/msp430/memmodel.h | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/libgloss/msp430/memmodel.h b/libgloss/msp430/memmodel.h index 4804e17dd..a481460c6 100644 --- a/libgloss/msp430/memmodel.h +++ b/libgloss/msp430/memmodel.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2012-2013 Red Hat, Inc. All rights reserved. +/* Copyright (c) 2012-2015 Red Hat, Inc. All rights reserved. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the BSD @@ -37,5 +37,30 @@ #define add_ ADD #define PTRsz 2 - #endif + +/* Start a function in its own named and numbered section, so that it + can be subject to linker garbage collection. The numbers are used + to enforce link-time ordering of the sections. Note - the construction + of the symbol names is critical - they need to match the unresolved + symbol references created by the compiler and assembler. */ +.macro START_CRT_FUNC number name + .section .crt_\number\name,"ax",@progbits + .global __crt0_\name + .type __crt0_\name , @function +__crt0_\name: +.endm + + +/* End a named function. Sets the size so that GDB does not get confused. */ +.macro END_CRT_FUNC name + .size __crt0_\name, . - __crt0_\name +.endm + + +/* Provide a weak definition of NAME, initialized to zero. */ +.macro WEAK_DEF name + .global \name + .weak \name + \name = 0 +.endm |