forked from Imagelibrary/rtems
Accidentally moved asm.h
This commit is contained in:
@@ -1,151 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
* COPYRIGHT (c) 1994-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __i386_ASM_h
|
||||
#define __i386_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/i386.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Go32 suffers the same bug as __REGISTER_PREFIX__
|
||||
*/
|
||||
|
||||
#if __GO32__
|
||||
#undef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Looks like there is a bug in gcc 2.6.2 where this is not
|
||||
* defined correctly when configured as i386-coff and
|
||||
* i386-aout.
|
||||
*/
|
||||
|
||||
#undef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__ %
|
||||
|
||||
/*
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
*/
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
#define eax REG (eax)
|
||||
#define ebx REG (ebx)
|
||||
#define ecx REG (ecx)
|
||||
#define edx REG (edx)
|
||||
#define esi REG (esi)
|
||||
#define edi REG (edi)
|
||||
#define esp REG (esp)
|
||||
#define ebp REG (ebp)
|
||||
#define cr0 REG (cr0)
|
||||
|
||||
#define ax REG (ax)
|
||||
#define bx REG (bx)
|
||||
#define cx REG (cx)
|
||||
#define dx REG (dx)
|
||||
#define si REG (si)
|
||||
#define di REG (di)
|
||||
#define sp REG (sp)
|
||||
#define bp REG (bp)
|
||||
|
||||
#define ah REG (ah)
|
||||
#define bh REG (bh)
|
||||
#define ch REG (ch)
|
||||
#define dh REG (dh)
|
||||
|
||||
#define al REG (al)
|
||||
#define bl REG (bl)
|
||||
#define cl REG (cl)
|
||||
#define dl REG (dl)
|
||||
|
||||
#define cs REG (cs)
|
||||
#define ds REG (ds)
|
||||
#define es REG (es)
|
||||
#define fs REG (fs)
|
||||
#define gs REG (gs)
|
||||
#define ss REG (ss)
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA .data
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS .bss
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .globl SYM (sym)
|
||||
#define EXTERN(sym) .globl SYM (sym)
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
|
||||
@@ -1,110 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
* COPYRIGHT (c) 1994-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __i960_ASM_h
|
||||
#define __i960_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/i960.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
#define g0 REG (g0)
|
||||
#define g1 REG (g1)
|
||||
#define g2 REG (g2)
|
||||
#define g3 REG (g3)
|
||||
#define g4 REG (g4)
|
||||
#define g5 REG (g5)
|
||||
#define g6 REG (g6)
|
||||
#define g7 REG (g7)
|
||||
#define g8 REG (g8)
|
||||
#define g9 REG (g9)
|
||||
#define g10 REG (g10)
|
||||
#define g11 REG (g11)
|
||||
#define g12 REG (g12)
|
||||
#define g13 REG (g13)
|
||||
#define g14 REG (g14)
|
||||
#define g15 REG (g15)
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .globl SYM (sym)
|
||||
#define EXTERN(sym) .globl SYM (sym)
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
@@ -1,144 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
* COPYRIGHT (c) 1994-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __M68k_ASM_h
|
||||
#define __M68k_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/cpu.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
#define d0 REG (d0)
|
||||
#define d1 REG (d1)
|
||||
#define d2 REG (d2)
|
||||
#define d3 REG (d3)
|
||||
#define d4 REG (d4)
|
||||
#define d5 REG (d5)
|
||||
#define d6 REG (d6)
|
||||
#define d7 REG (d7)
|
||||
#define a0 REG (a0)
|
||||
#define a1 REG (a1)
|
||||
#define a2 REG (a2)
|
||||
#define a3 REG (a3)
|
||||
#define a4 REG (a4)
|
||||
#define a5 REG (a5)
|
||||
#define a6 REG (a6)
|
||||
#define a7 REG (a7)
|
||||
#define sp REG (sp)
|
||||
|
||||
#define msp REG (msp)
|
||||
#define usp REG (usp)
|
||||
#define isp REG (isp)
|
||||
#define sr REG (sr)
|
||||
#define vbr REG (vbr)
|
||||
#define dfc REG (dfc)
|
||||
#define sfc REG (sfc)
|
||||
|
||||
/* mcf52xx special regs */
|
||||
#define cacr REG (cacr)
|
||||
#define acr0 REG (acr0)
|
||||
#define acr1 REG (acr1)
|
||||
#define rambar0 REG (rambar0)
|
||||
#define mbar REG (mbar)
|
||||
|
||||
|
||||
#define fp0 REG (fp0)
|
||||
#define fp1 REG (fp1)
|
||||
#define fp2 REG (fp2)
|
||||
#define fp3 REG (fp3)
|
||||
#define fp4 REG (fp4)
|
||||
#define fp5 REG (fp5)
|
||||
#define fp6 REG (fp6)
|
||||
#define fp7 REG (fp7)
|
||||
|
||||
#define fpc REG (fpc)
|
||||
#define fpi REG (fpi)
|
||||
#define fps REG (fps)
|
||||
#define fpsr REG (fpsr)
|
||||
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA .data
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS .bss
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .globl SYM (sym)
|
||||
#define EXTERN(sym) .globl SYM (sym)
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
|
||||
@@ -1,102 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
* COPYRIGHT (c) 1994-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
/* @(#)asm.h 03/15/96 1.1 */
|
||||
|
||||
#ifndef __NO_CPU_ASM_h
|
||||
#define __NO_CPU_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/mips64orion.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
/*
|
||||
* define macros for all of the registers on this CPU
|
||||
*
|
||||
* EXAMPLE: #define d0 REG (d0)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .globl SYM (sym)
|
||||
#define EXTERN(sym) .globl SYM (sym)
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
|
||||
@@ -1,101 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
* COPYRIGHT (c) 1994-1997.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __NO_CPU_ASM_h
|
||||
#define __NO_CPU_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/no_cpu.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
/*
|
||||
* define macros for all of the registers on this CPU
|
||||
*
|
||||
* EXAMPLE: #define d0 REG (d0)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .globl SYM (sym)
|
||||
#define EXTERN(sym) .globl SYM (sym)
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
|
||||
@@ -1,275 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
* COPYRIGHT (c) 1995.
|
||||
* i-cubed ltd.
|
||||
*
|
||||
* COPYRIGHT (c) 1994.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __PPC_ASM_h
|
||||
#define __PPC_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/ppc.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
#ifndef __FLOAT_REGISTER_PREFIX__
|
||||
#define __FLOAT_REGISTER_PREFIX__ __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
#if (PPC_ABI == PPC_ABI_POWEROPEN)
|
||||
#ifndef __PROC_LABEL_PREFIX__
|
||||
#define __PROC_LABEL_PREFIX__ .
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __PROC_LABEL_PREFIX__
|
||||
#define __PROC_LABEL_PREFIX__ __USER_LABEL_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for procedure labels. */
|
||||
|
||||
#define PROC(x) CONCAT1 (__PROC_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for floating point registers. */
|
||||
|
||||
#define FREG(x) CONCAT1 (__FLOAT_REGISTER_PREFIX__, x)
|
||||
|
||||
/*
|
||||
* define macros for all of the registers on this CPU
|
||||
*
|
||||
* EXAMPLE: #define d0 REG (d0)
|
||||
*/
|
||||
#define r0 REG(0)
|
||||
#define r1 REG(1)
|
||||
#define r2 REG(2)
|
||||
#define r3 REG(3)
|
||||
#define r4 REG(4)
|
||||
#define r5 REG(5)
|
||||
#define r6 REG(6)
|
||||
#define r7 REG(7)
|
||||
#define r8 REG(8)
|
||||
#define r9 REG(9)
|
||||
#define r10 REG(10)
|
||||
#define r11 REG(11)
|
||||
#define r12 REG(12)
|
||||
#define r13 REG(13)
|
||||
#define r14 REG(14)
|
||||
#define r15 REG(15)
|
||||
#define r16 REG(16)
|
||||
#define r17 REG(17)
|
||||
#define r18 REG(18)
|
||||
#define r19 REG(19)
|
||||
#define r20 REG(20)
|
||||
#define r21 REG(21)
|
||||
#define r22 REG(22)
|
||||
#define r23 REG(23)
|
||||
#define r24 REG(24)
|
||||
#define r25 REG(25)
|
||||
#define r26 REG(26)
|
||||
#define r27 REG(27)
|
||||
#define r28 REG(28)
|
||||
#define r29 REG(29)
|
||||
#define r30 REG(30)
|
||||
#define r31 REG(31)
|
||||
#define f0 FREG(0)
|
||||
#define f1 FREG(1)
|
||||
#define f2 FREG(2)
|
||||
#define f3 FREG(3)
|
||||
#define f4 FREG(4)
|
||||
#define f5 FREG(5)
|
||||
#define f6 FREG(6)
|
||||
#define f7 FREG(7)
|
||||
#define f8 FREG(8)
|
||||
#define f9 FREG(9)
|
||||
#define f10 FREG(10)
|
||||
#define f11 FREG(11)
|
||||
#define f12 FREG(12)
|
||||
#define f13 FREG(13)
|
||||
#define f14 FREG(14)
|
||||
#define f15 FREG(15)
|
||||
#define f16 FREG(16)
|
||||
#define f17 FREG(17)
|
||||
#define f18 FREG(18)
|
||||
#define f19 FREG(19)
|
||||
#define f20 FREG(20)
|
||||
#define f21 FREG(21)
|
||||
#define f22 FREG(22)
|
||||
#define f23 FREG(23)
|
||||
#define f24 FREG(24)
|
||||
#define f25 FREG(25)
|
||||
#define f26 FREG(26)
|
||||
#define f27 FREG(27)
|
||||
#define f28 FREG(28)
|
||||
#define f29 FREG(29)
|
||||
#define f30 FREG(30)
|
||||
#define f31 FREG(31)
|
||||
|
||||
/*
|
||||
* Some special purpose registers (SPRs).
|
||||
*/
|
||||
#define srr0 0x01a
|
||||
#define srr1 0x01b
|
||||
#define srr2 0x3de /* IBM 400 series only */
|
||||
#define srr3 0x3df /* IBM 400 series only */
|
||||
#define sprg0 0x110
|
||||
#define sprg1 0x111
|
||||
#define sprg2 0x112
|
||||
#define sprg3 0x113
|
||||
|
||||
|
||||
/* the following SPR/DCR registers exist only in IBM 400 series */
|
||||
#define dear 0x3d5
|
||||
#define evpr 0x3d6 /* SPR: exception vector prefix register */
|
||||
#define iccr 0x3fb /* SPR: instruction cache control reg. */
|
||||
#define dccr 0x3fa /* SPR: data cache control reg. */
|
||||
|
||||
#define exisr 0x040 /* DCR: external interrupt status register */
|
||||
#define exier 0x042 /* DCR: external interrupt enable register */
|
||||
#define br0 0x080 /* DCR: memory bank register 0 */
|
||||
#define br1 0x081 /* DCR: memory bank register 1 */
|
||||
#define br2 0x082 /* DCR: memory bank register 2 */
|
||||
#define br3 0x083 /* DCR: memory bank register 3 */
|
||||
#define br4 0x084 /* DCR: memory bank register 4 */
|
||||
#define br5 0x085 /* DCR: memory bank register 5 */
|
||||
#define br6 0x086 /* DCR: memory bank register 6 */
|
||||
#define br7 0x087 /* DCR: memory bank register 7 */
|
||||
/* end of IBM400 series register definitions */
|
||||
|
||||
/* The following registers are for the MPC8x0 */
|
||||
#define der 0x095 /* Debug Enable Register */
|
||||
/* end of MPC8x0 registers */
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC_VAR(sym) .globl SYM (sym)
|
||||
#define EXTERN_VAR(sym) .extern SYM (sym)
|
||||
#define PUBLIC_PROC(sym) .globl PROC (sym)
|
||||
#define EXTERN_PROC(sym) .extern PROC (sym)
|
||||
|
||||
/* Other potentially assembler specific operations */
|
||||
#if PPC_ASM == PPC_ASM_ELF
|
||||
#define ALIGN(n,p) .align p
|
||||
#define DESCRIPTOR(x) \
|
||||
.section .descriptors,"aw"; \
|
||||
PUBLIC_VAR (x); \
|
||||
SYM (x):; \
|
||||
.long PROC (x); \
|
||||
.long s.got; \
|
||||
.long 0
|
||||
|
||||
#define EXT_SYM_REF(x) .long x
|
||||
#define EXT_PROC_REF(x) .long x
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA .data
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS .bss
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
#elif PPC_ASM == PPC_ASM_XCOFF
|
||||
#define ALIGN(n,p) .align p
|
||||
#define DESCRIPTOR(x) \
|
||||
.csect x[DS]; \
|
||||
.globl x[DS]; \
|
||||
.long PROC (x)[PR]; \
|
||||
.long TOC[tc0]
|
||||
|
||||
#define EXT_SYM_REF(x) .long x[RW]
|
||||
#define EXT_PROC_REF(x) .long x[DS]
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
#define BEGIN_CODE_DCL .csect .text[PR]
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .csect .data[RW]
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .csect .text[PR]
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA .csect .data[RW]
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS .bss
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
#else
|
||||
#error "PPC_ASM_TYPE is not properly defined"
|
||||
#endif
|
||||
#ifndef PPC_ASM
|
||||
#error "PPC_ASM_TYPE is not properly defined"
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
|
||||
@@ -1,137 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
* Authors: Ralf Corsepius (corsepiu@faw.uni-ulm.de) and
|
||||
* Bernd Becker (becker@faw.uni-ulm.de)
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted. This file is:
|
||||
*
|
||||
*
|
||||
* COPYRIGHT (c) 1997-1998, FAW Ulm, Germany
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
*
|
||||
*
|
||||
* COPYRIGHT (c) 1998.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* Copyright assigned to U.S. Government, 1994.
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.OARcorp.com/rtems/license.html.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __CPU_SH_ASM_h
|
||||
#define __CPU_SH_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/sh.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
/*
|
||||
* define macros for all of the registers on this CPU
|
||||
*
|
||||
* EXAMPLE: #define d0 REG (d0)
|
||||
*/
|
||||
#define r0 REG (r0)
|
||||
#define r1 REG (r1)
|
||||
#define r2 REG (r2)
|
||||
#define r3 REG (r3)
|
||||
#define r4 REG (r4)
|
||||
#define r5 REG (r5)
|
||||
#define r6 REG (r6)
|
||||
#define r7 REG (r7)
|
||||
#define r8 REG (r8)
|
||||
#define r9 REG (r9)
|
||||
#define r10 REG (r10)
|
||||
#define r11 REG (r11)
|
||||
#define r12 REG (r12)
|
||||
#define r13 REG (r13)
|
||||
#define r14 REG (r14)
|
||||
#define r15 REG (r15)
|
||||
#define vbr REG (vbr)
|
||||
#define gbr REG (gbr)
|
||||
#define pr REG (pr)
|
||||
#define mach REG (mach)
|
||||
#define macl REG (macl)
|
||||
#define sr REG (sr)
|
||||
#define pc REG (pc)
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .global SYM (sym)
|
||||
#define EXTERN(sym) .global SYM (sym)
|
||||
|
||||
#endif
|
||||
@@ -1,123 +0,0 @@
|
||||
/* asm.h
|
||||
*
|
||||
* This include file attempts to address the problems
|
||||
* caused by incompatible flavors of assemblers and
|
||||
* toolsets. It primarily addresses variations in the
|
||||
* use of leading underscores on symbols and the requirement
|
||||
* that register names be preceded by a %.
|
||||
*
|
||||
*
|
||||
* NOTE: The spacing in the use of these macros
|
||||
* is critical to them working as advertised.
|
||||
*
|
||||
* COPYRIGHT:
|
||||
*
|
||||
* This file is based on similar code found in newlib available
|
||||
* from ftp.cygnus.com. The file which was used had no copyright
|
||||
* notice. This file is freely distributable as long as the source
|
||||
* of the file is noted.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __SPARC_ASM_h
|
||||
#define __SPARC_ASM_h
|
||||
|
||||
/*
|
||||
* Indicate we are in an assembly file and get the basic CPU definitions.
|
||||
*/
|
||||
|
||||
#ifndef ASM
|
||||
#define ASM
|
||||
#endif
|
||||
|
||||
#include <rtems/score/targopts.h>
|
||||
#include <rtems/score/cpu.h>
|
||||
|
||||
/*
|
||||
* Recent versions of GNU cpp define variables which indicate the
|
||||
* need for underscores and percents. If not using GNU cpp or
|
||||
* the version does not support this, then you will obviously
|
||||
* have to define these as appropriate.
|
||||
*/
|
||||
|
||||
/* XXX __USER_LABEL_PREFIX__ and __REGISTER_PREFIX__ do not work on gcc 2.7.0 */
|
||||
/* XXX The following ifdef magic fixes the problem but results in a warning */
|
||||
/* XXX when compiling assembly code. */
|
||||
#undef __USER_LABEL_PREFIX__
|
||||
#ifndef __USER_LABEL_PREFIX__
|
||||
#define __USER_LABEL_PREFIX__ _
|
||||
#endif
|
||||
|
||||
#ifndef __REGISTER_PREFIX__
|
||||
#define __REGISTER_PREFIX__
|
||||
#endif
|
||||
|
||||
/* ANSI concatenation macros. */
|
||||
|
||||
#define CONCAT1(a, b) CONCAT2(a, b)
|
||||
#define CONCAT2(a, b) a ## b
|
||||
|
||||
/* Use the right prefix for global labels. */
|
||||
|
||||
#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
|
||||
|
||||
/* Use the right prefix for registers. */
|
||||
|
||||
#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
|
||||
|
||||
/*
|
||||
* define macros for all of the registers on this CPU
|
||||
*
|
||||
* EXAMPLE: #define d0 REG (d0)
|
||||
*/
|
||||
|
||||
/*
|
||||
* Define macros to handle section beginning and ends.
|
||||
*/
|
||||
|
||||
|
||||
#define BEGIN_CODE_DCL .text
|
||||
#define END_CODE_DCL
|
||||
#define BEGIN_DATA_DCL .data
|
||||
#define END_DATA_DCL
|
||||
#define BEGIN_CODE .text
|
||||
#define END_CODE
|
||||
#define BEGIN_DATA
|
||||
#define END_DATA
|
||||
#define BEGIN_BSS
|
||||
#define END_BSS
|
||||
#define END
|
||||
|
||||
/*
|
||||
* Following must be tailor for a particular flavor of the C compiler.
|
||||
* They may need to put underscores in front of the symbols.
|
||||
*/
|
||||
|
||||
#define PUBLIC(sym) .globl SYM (sym)
|
||||
#define EXTERN(sym) .globl SYM (sym)
|
||||
|
||||
/*
|
||||
* Entry for traps which jump to a programmer-specified trap handler.
|
||||
*/
|
||||
|
||||
#define TRAP(_vector, _handler) \
|
||||
mov %psr, %l0 ; \
|
||||
sethi %hi(_handler), %l4 ; \
|
||||
jmp %l4+%lo(_handler); \
|
||||
mov _vector, %l3
|
||||
|
||||
/*
|
||||
* Used for the reset trap for ERC32 to avoid a supervisor instruction
|
||||
*/
|
||||
|
||||
#define RTRAP(_vector, _handler) \
|
||||
mov %g0, %l0 ; \
|
||||
sethi %hi(_handler), %l4 ; \
|
||||
jmp %l4+%lo(_handler); \
|
||||
mov _vector, %l3
|
||||
|
||||
#endif
|
||||
/* end of include file */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user