73 lines
2.2 KiB
C
73 lines
2.2 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 linker links all .crt_* sections in asciibetical order at the same place.
|
|
So, the four digits in .crt_NNNN_xxx name are used to enforce link-time
|
|
ordering of the sections. Make sure to keep them in sequential order. The
|
|
first two digits are set in the files, the second two allow users to insert
|
|
code between our standard code fragments.
|
|
|
|
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
|