~ubuntu-branches/debian/squeeze/erlang/squeeze

« back to all changes in this revision

Viewing changes to erts/emulator/hipe/hipe_sparc_registers.h

  • Committer: Bazaar Package Importer
  • Author(s): Erlang Packagers, Sergei Golovan
  • Date: 2006-12-03 17:07:44 UTC
  • mfrom: (2.1.11 feisty)
  • Revision ID: james.westby@ubuntu.com-20061203170744-rghjwupacqlzs6kv
Tags: 1:11.b.2-4
[ Sergei Golovan ]
Fixed erlang-base and erlang-base-hipe prerm scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (c) 2002 by Erik Johansson */
2
 
 
3
 
/***************************************************************************
4
 
*   NAME
5
 
*     hipe_sparc_registers.h
6
 
*   PURPOSE
7
 
*     To provide symbolic names for SPARC registers for both mk_literals 
8
 
*     and for use in spac glue code like hipe_sparc_glue.S and 
9
 
*     hipe_sparc_bifs.m4.
10
 
*
11
 
*   NOTES
12
 
*     See hipe_sparc_abi.txt for details.
13
 
*     Be very careful when editing this file -- subtle aspects of how registers
14
 
*     are used may be assumed to hold. (e.g. P is in a C - callee save register.).
15
 
*     Once again: read hipe_sparc_abi.txt before editing this file, and 
16
 
*     if you edit this file update hipe_sparc_abi.txt !!!
17
 
*   
18
 
*     All names are defined twice, symbolically for the .S files and numerically 
19
 
*     for hipe_mk_literals (which creates hipe_literals.hrl used by 
20
 
*     hipe_sparc_registers.erl). 
21
 
*     (If you can come up with a better solution requiering only one define 
22
 
*     I would be grateful....
23
 
*
24
 
*   HISTORY
25
 
*     Erik Johansson (happi@csd.uu.se) - Mar 07, 2002: Created.
26
 
****************************************************************************/
27
 
 
28
 
#ifndef __HIPE_SPARC_REGISTERS_H__
29
 
#define __HIPE_SPARC_REGISTERS_H__
30
 
/* ------------------ Defines ------------------ */
31
 
/*
32
 
 * Reserved registers
33
 
 * See hipe_sparc_abi.txt
34
 
 */
35
 
#define G0 0
36
 
#define G1 1
37
 
#define G2 2
38
 
#define G3 3
39
 
#define G4 4
40
 
#define G5 5
41
 
#define G6 6
42
 
#define G7 7
43
 
#define O0 8
44
 
#define O1 9
45
 
#define O2 10
46
 
#define O3 11
47
 
#define O4 12
48
 
#define O5 13
49
 
#define O6 14
50
 
#define O7 15
51
 
#define L0 16
52
 
#define L1 17
53
 
#define L2 18
54
 
#define L3 19
55
 
#define L4 20
56
 
#define L5 21
57
 
#define L6 22
58
 
#define L7 23
59
 
#define I0 24
60
 
#define I1 25
61
 
#define I2 26
62
 
#define I3 27
63
 
#define I4 28
64
 
#define I5 29
65
 
#define I6 30
66
 
#define I7 31
67
 
 
68
 
#define P               %i0
69
 
#define HP              %i1     /* XXX: heap pointer, n�e HEAP */
70
 
#define HP_LIMIT        %i2
71
 
#define NSP             %i3     /* XXX: stack pointer, n�e NSTACK */
72
 
#define NSP_LIMIT       %i4
73
 
#define FCALLS          %i5     
74
 
 
75
 
 
76
 
#define RA              %o7     /* XXX: return address, n�e CP */
77
 
 
78
 
#define TEMP0           %g1
79
 
#define TEMP1           %l7     /* Should be local registers so that */
80
 
#define TEMP2           %l6     /*   they are saved over C-calls.    */
81
 
#define TEMP3           %l5     /*                                   */
82
 
 
83
 
#define ARG0            %o1
84
 
#define ARG1            %o2
85
 
#define ARG2            %o3
86
 
#define ARG3            %o4
87
 
#define ARG4            %o5
88
 
#define ARG5            %l0
89
 
#define ARG6            %l1
90
 
#define ARG7            %l2
91
 
#define ARG8            %l3
92
 
#define ARG9            %l4
93
 
#define ARG10           %g2
94
 
#define ARG11           %g3
95
 
#define ARG12           %g4
96
 
#define ARG13           %g5
97
 
#define ARG14           %i7
98
 
#define ARG15           %o0
99
 
 
100
 
 
101
 
#define P_NR            I0
102
 
#define HP_NR           I1      /* XXX: heap pointer, n�e HEAP */
103
 
#define HP_LIMIT_NR     I2
104
 
#define NSP_NR          I3      /* XXX: stack pointer, n�e NSTACK */
105
 
#define NSP_LIMIT_NR    I4
106
 
#define FCALLS_NR       I5
107
 
 
108
 
#define RA_NR           O7      /* XXX: return address, n�e CP */
109
 
 
110
 
#define TEMP0_NR        G1
111
 
#define TEMP1_NR        L7     /* Should be local registers so that */
112
 
#define TEMP2_NR        L6     /*   they are saved over C-calls.    */
113
 
#define TEMP3_NR        L5     /*                                   */
114
 
 
115
 
#define ARG0_NR         O1
116
 
#define ARG1_NR         O2
117
 
#define ARG2_NR         O3
118
 
#define ARG3_NR         O4
119
 
#define ARG4_NR         O5
120
 
#define ARG5_NR         L0
121
 
#define ARG6_NR         L1
122
 
#define ARG7_NR         L2
123
 
#define ARG8_NR         L3
124
 
#define ARG9_NR         L4
125
 
#define ARG10_NR        G2
126
 
#define ARG11_NR        G3
127
 
#define ARG12_NR        G4
128
 
#define ARG13_NR        G5
129
 
#define ARG14_NR        I7
130
 
#define ARG15_NR        O0    /* Ret val */
131
 
 
132
 
#endif /* __HIPE_SPARC_REGISTERS_H__ */
133