Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
msp430-elf-gcc - 4.9.1 alternative iomacros.h
/*******************************************************************************
* iomacros.h - hacked version to work with .S files properly
*
* Copyright (C) 2003-2013 Texas Instruments Incorporated - http://www.ti.com/
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* Neither the name of Texas Instruments Incorporated nor the names of
* its contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
******************************************************************************/
#if !defined(_IOMACROS_H_)
#define _IOMACROS_H_
#ifdef __cplusplus
extern "C" {
#endif
#if defined(__ASSEMBLER__)
/* Definitions for assembly compilation using the GNU assembler */
#define sfrb(x,x_) x=x_
#define sfrw(x,x_) x=x_
#define sfra(x,x_) x=x_
#define sfrl(x,x_) x=x_
#define const_sfrb(x,x_) x=x_
#define const_sfrw(x,x_) x=x_
#define const_sfra(x,x_) x=x_
#define const_sfrl(x,x_) x=x_
#else
/* Definitions for c and c++ */
#define sfrb_(x,x_) volatile unsigned char x asm(#x_)
#define sfrw_(x,x_) volatile unsigned int x asm(#x_)
#define sfra_(x,x_) volatile unsigned long int x asm(#x_)
#define sfrl_(x,x_) volatile unsigned long int x asm(#x_)
#define sfrb(x,x_) extern sfrb_(x,x_)
#define sfrw(x,x_) extern sfrw_(x,x_)
#define sfra(x,x_) extern sfra_(x,x_)
#define sfrl(x,x_) extern sfrl_(x,x_)
#define const_sfrb(x,x_) extern const sfrb_(x,x_)
#define const_sfrw(x,x_) extern const sfrw_(x,x_)
#define const_sfra(x,x_) extern const sfra_(x,x_)
#define const_sfrl(x,x_) extern const sfrl_(x,x_)
#define __interrupt(vec) __attribute__((interrupt(vec)))
#endif /* defined(__ASSEMBLER__) */
#ifdef __cplusplus
}
#endif
#endif /* _IOMACROS_H_ */
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.