source: rtems/cpukit/score/cpu/mips/asm.h @ fda47cd

4.104.114.84.95
Last change on this file since fda47cd was fda47cd, checked in by Joel Sherrill <joel.sherrill@…>, on 10/24/00 at 21:48:33

2000-10-24 Alan Cudmore <alanc@…> and

Joel Sherrill <joel@…>

  • This is a major reworking of the mips64orion port to use gcc predefines as much as possible and a big push to multilib the mips port. The mips64orion port was copied/renamed to mips to be more like other GNU tools. Alan did most of the technical work of determining how to map old macro names used by the mips64orion port to standard compiler macro definitions. Joel did the merge with CVS magic to keep individual file history and did the BSP modifications. Details follow:
  • Makefile.am: idtmon.h in mips64orion port not present.
  • asm.h: MIPS64ORION replaced with MIPS. Frame setup macros added.
  • cpu.c: Comments added.
  • cpu_asm.S: Conditionals changed. MIPS ISA level 1 support added. First attempt at exception/interrupt processing for ISA level 1 and minus any use of IDT/MON added.
  • idtcpu.h: Conditionals changed to use gcc predefines.
  • iregdef.h: Ditto.
  • cpu_asm.h: No real change. Merger required commit.
  • rtems/Makefile.am: Ditto.
  • rtems/score/Makefile.am: Ditto.
  • rtems/score/cpu.h: Change MIPS64ORION to MIPS.
  • rtems/score/mips64orion.h: Change MIPS64ORION to MIPS. Convert from using RTEMS_CPU_MODEL to gcc predefines to figre things out.
  • Property mode set to 100644
File size: 2.9 KB
Line 
1/*  asm.h
2 *
3 *  This include file attempts to address the problems
4 *  caused by incompatible flavors of assemblers and
5 *  toolsets.  It primarily addresses variations in the
6 *  use of leading underscores on symbols and the requirement
7 *  that register names be preceded by a %.
8 *
9 *
10 *  NOTE: The spacing in the use of these macros
11 *        is critical to them working as advertised.
12 *
13 *  COPYRIGHT:
14 *
15 *  This file is based on similar code found in newlib available
16 *  from ftp.cygnus.com.  The file which was used had no copyright
17 *  notice.  This file is freely distributable as long as the source
18 *  of the file is noted.  This file is:
19 *
20 *  COPYRIGHT (c) 1994-1997.
21 *  On-Line Applications Research Corporation (OAR).
22 *
23 *  $Id$
24 */
25/* @(#)asm.h       03/15/96     1.1 */
26
27#ifndef __NO_CPU_ASM_h
28#define __NO_CPU_ASM_h
29
30/*
31 *  Indicate we are in an assembly file and get the basic CPU definitions.
32 */
33
34#ifndef ASM
35#define ASM
36#endif
37#include <rtems/score/targopts.h>
38#include <rtems/score/mips64orion.h>
39
40/*
41 *  Recent versions of GNU cpp define variables which indicate the
42 *  need for underscores and percents.  If not using GNU cpp or
43 *  the version does not support this, then you will obviously
44 *  have to define these as appropriate.
45 */
46
47#ifndef __USER_LABEL_PREFIX__
48#define __USER_LABEL_PREFIX__ _
49#endif
50
51#ifndef __REGISTER_PREFIX__
52#define __REGISTER_PREFIX__
53#endif
54
55/* ANSI concatenation macros.  */
56
57#define CONCAT1(a, b) CONCAT2(a, b)
58#define CONCAT2(a, b) a ## b
59
60/* Use the right prefix for global labels.  */
61
62#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
63
64/* Use the right prefix for registers.  */
65
66#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
67
68/*
69 *  define macros for all of the registers on this CPU
70 *
71 *  EXAMPLE:     #define d0 REG (d0)
72 */
73
74/*
75 *  Define macros to handle section beginning and ends.
76 */
77
78
79#define BEGIN_CODE_DCL .text
80#define END_CODE_DCL
81#define BEGIN_DATA_DCL .data
82#define END_DATA_DCL
83#define BEGIN_CODE .text
84#define END_CODE
85#define BEGIN_DATA
86#define END_DATA
87#define BEGIN_BSS
88#define END_BSS
89#define END
90
91/*
92 *  Following must be tailor for a particular flavor of the C compiler.
93 *  They may need to put underscores in front of the symbols.
94 */
95
96#define PUBLIC(sym) .globl SYM (sym)
97#define EXTERN(sym) .globl SYM (sym)
98
99/*
100 *  Debugger macros for assembly language routines. Allows the
101 *  programmer to set up the necessary stack frame info
102 *  required by debuggers to do stack traces.
103 */
104
105#ifndef XDS
106#define FRAME(name,frm_reg,offset,ret_reg)      \
107        .globl  name;                           \
108        .ent    name;                           \
109name:;                                          \
110        .frame  frm_reg,offset,ret_reg
111#define ENDFRAME(name)                          \
112        .end name
113#else
114#define FRAME(name,frm_reg,offset,ret_reg)      \
115        .globl  _##name;\
116_##name:
117#define ENDFRAME(name)
118#endif  XDS
119
120#endif
121/* end of include file */
122
Note: See TracBrowser for help on using the repository browser.