newlib/libgloss/msp430/memmodel.h
Nick Clifton baa681fd38 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.
2015-05-27 13:30:19 +02:00

67 lines
2.0 KiB
C

/* 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
License. This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY expressed or implied, including the implied warranties
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. A copy of this license
is available at http://www.opensource.org/licenses. Any Red Hat trademarks that
are incorporated in the source code or documentation are not subject to the BSD
License and may only be used or replicated with the express permission of
Red Hat, Inc.
*/
/* This file provides macros for various MSP430 instructions
which have similar, but not identical, versions when assembling
for the LARGE memory model. */
#ifdef __MSP430X_LARGE__
#define call_ CALLA
#define ret_ RETA
#define mov_ MOVA
#define movx_ MOVX
#define br_ BRA
#define cmp_ CMPA
#define add_ ADDA
#define PTRsz 4
#else
#define call_ CALL
#define ret_ RET
#define mov_ MOV
#define movx_ MOV
#define br_ BR
#define cmp_ CMP
#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