* 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.
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			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
 |