summaryrefslogtreecommitdiff
path: root/gdb/config/sparc/tm-sparclet.h
blob: 95bdeea68840b1045213934fb23f7c9a9969dad0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
// OBSOLETE /* Target machine definitions for GDB for an embedded SPARC.
// OBSOLETE    Copyright 1996, 1997, 2000 Free Software Foundation, Inc.
// OBSOLETE 
// OBSOLETE    This file is part of GDB.
// OBSOLETE 
// OBSOLETE    This program is free software; you can redistribute it and/or modify
// OBSOLETE    it under the terms of the GNU General Public License as published by
// OBSOLETE    the Free Software Foundation; either version 2 of the License, or
// OBSOLETE    (at your option) any later version.
// OBSOLETE 
// OBSOLETE    This program is distributed in the hope that it will be useful,
// OBSOLETE    but WITHOUT ANY WARRANTY; without even the implied warranty of
// OBSOLETE    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// OBSOLETE    GNU General Public License for more details.
// OBSOLETE 
// OBSOLETE    You should have received a copy of the GNU General Public License
// OBSOLETE    along with this program; if not, write to the Free Software
// OBSOLETE    Foundation, Inc., 59 Temple Place - Suite 330,
// OBSOLETE    Boston, MA 02111-1307, USA.  */
// OBSOLETE 
// OBSOLETE #include "regcache.h"
// OBSOLETE 
// OBSOLETE #define TARGET_SPARCLET 1	/* Still needed for non-multi-arch case */
// OBSOLETE 
// OBSOLETE #include "sparc/tm-sparc.h"
// OBSOLETE 
// OBSOLETE /* Note: we are not defining GDB_MULTI_ARCH for the sparclet target
// OBSOLETE    at this time, because we have not figured out how to detect the
// OBSOLETE    sparclet target from the bfd structure.  */
// OBSOLETE 
// OBSOLETE /* Sparclet regs, for debugging purposes.  */
// OBSOLETE 
// OBSOLETE enum { 
// OBSOLETE   CCSR_REGNUM   = 72,
// OBSOLETE   CCPR_REGNUM   = 73, 
// OBSOLETE   CCCRCR_REGNUM = 74,
// OBSOLETE   CCOR_REGNUM   = 75, 
// OBSOLETE   CCOBR_REGNUM  = 76,
// OBSOLETE   CCIBR_REGNUM  = 77,
// OBSOLETE   CCIR_REGNUM   = 78
// OBSOLETE };
// OBSOLETE 
// OBSOLETE /* Select the sparclet disassembler.  Slightly different instruction set from
// OBSOLETE    the V8 sparc.  */
// OBSOLETE 
// OBSOLETE #undef TM_PRINT_INSN_MACH
// OBSOLETE #define TM_PRINT_INSN_MACH bfd_mach_sparc_sparclet
// OBSOLETE 
// OBSOLETE /* overrides of tm-sparc.h */
// OBSOLETE 
// OBSOLETE #undef TARGET_BYTE_ORDER
// OBSOLETE 
// OBSOLETE /* Sequence of bytes for breakpoint instruction (ta 1). */
// OBSOLETE #undef BREAKPOINT
// OBSOLETE #define BIG_BREAKPOINT {0x91, 0xd0, 0x20, 0x01}
// OBSOLETE #define LITTLE_BREAKPOINT {0x01, 0x20, 0xd0, 0x91}
// OBSOLETE 
// OBSOLETE #if !defined (GDB_MULTI_ARCH) || (GDB_MULTI_ARCH == 0)
// OBSOLETE /*
// OBSOLETE  * The following defines must go away for MULTI_ARCH.
// OBSOLETE  */
// OBSOLETE 
// OBSOLETE #undef  NUM_REGS		/* formerly "72" */
// OBSOLETE /*                WIN  FP   CPU  CCP  ASR  AWR  APSR */
// OBSOLETE #define NUM_REGS (32 + 32 + 8  + 8  + 8/*+ 32 + 1*/)
// OBSOLETE 
// OBSOLETE #undef  REGISTER_BYTES		/* formerly "(32*4 + 32*4 + 8*4)" */
// OBSOLETE #define REGISTER_BYTES (32*4 + 32*4 + 8*4 + 8*4 + 8*4/* + 32*4 + 1*4*/)
// OBSOLETE 
// OBSOLETE /* Initializer for an array of names of registers.
// OBSOLETE    There should be NUM_REGS strings in this initializer.  */
// OBSOLETE /* Sparclet has no fp! */
// OBSOLETE /* Compiler maps types for floats by number, so can't 
// OBSOLETE    change the numbers here. */
// OBSOLETE 
// OBSOLETE #undef REGISTER_NAMES
// OBSOLETE #define REGISTER_NAMES  \
// OBSOLETE { "g0", "g1", "g2", "g3", "g4", "g5", "g6", "g7",	\
// OBSOLETE   "o0", "o1", "o2", "o3", "o4", "o5", "o6", "o7",	\
// OBSOLETE   "l0", "l1", "l2", "l3", "l4", "l5", "l6", "l7",	\
// OBSOLETE   "i0", "i1", "i2", "i3", "i4", "i5", "i6", "i7",	\
// OBSOLETE 							\
// OBSOLETE   "", "", "", "", "", "", "", "", /* no FPU regs */	\
// OBSOLETE   "", "", "", "", "", "", "", "", 			\
// OBSOLETE   "", "", "", "", "", "", "", "", 			\
// OBSOLETE   "", "", "", "", "", "", "", "", 			\
// OBSOLETE 				  /* no CPSR, FPSR */	\
// OBSOLETE   "y", "psr", "wim", "tbr", "pc", "npc", "", "", 	\
// OBSOLETE 							\
// OBSOLETE   "ccsr", "ccpr", "cccrcr", "ccor", "ccobr", "ccibr", "ccir", "", \
// OBSOLETE 								  \
// OBSOLETE   /*       ASR15                 ASR19 (don't display them) */    \
// OBSOLETE   "asr1",  "", "asr17", "asr18", "", "asr20", "asr21", "asr22",   \
// OBSOLETE /*									  \
// OBSOLETE   "awr0",  "awr1",  "awr2",  "awr3",  "awr4",  "awr5",  "awr6",  "awr7",  \
// OBSOLETE   "awr8",  "awr9",  "awr10", "awr11", "awr12", "awr13", "awr14", "awr15", \
// OBSOLETE   "awr16", "awr17", "awr18", "awr19", "awr20", "awr21", "awr22", "awr23", \
// OBSOLETE   "awr24", "awr25", "awr26", "awr27", "awr28", "awr29", "awr30", "awr31", \
// OBSOLETE   "apsr",								  \
// OBSOLETE  */									  \
// OBSOLETE }
// OBSOLETE 
// OBSOLETE /* Remove FP dependant code which was defined in tm-sparc.h */
// OBSOLETE #undef	FP0_REGNUM		/* Floating point register 0 */
// OBSOLETE #undef  FPS_REGNUM		/* Floating point status register */
// OBSOLETE #undef 	CPS_REGNUM		/* Coprocessor status register */
// OBSOLETE 
// OBSOLETE /* sparclet register numbers */
// OBSOLETE #define CCSR_REGNUM 72
// OBSOLETE 
// OBSOLETE #undef DEPRECATED_EXTRACT_RETURN_VALUE
// OBSOLETE #define DEPRECATED_EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF)            \
// OBSOLETE   {                                                                    \
// OBSOLETE     memcpy ((VALBUF),                                                  \
// OBSOLETE 	    (char *)(REGBUF) + REGISTER_RAW_SIZE (O0_REGNUM) * 8 +     \
// OBSOLETE 	    (TYPE_LENGTH(TYPE) >= REGISTER_RAW_SIZE (O0_REGNUM)        \
// OBSOLETE 	     ? 0 : REGISTER_RAW_SIZE (O0_REGNUM) - TYPE_LENGTH(TYPE)), \
// OBSOLETE 	    TYPE_LENGTH(TYPE));                                        \
// OBSOLETE   }
// OBSOLETE #undef DEPRECATED_STORE_RETURN_VALUE
// OBSOLETE #define DEPRECATED_STORE_RETURN_VALUE(TYPE,VALBUF) \
// OBSOLETE   {                                                                    \
// OBSOLETE     /* Other values are returned in register %o0.  */                  \
// OBSOLETE     deprecated_write_register_bytes (REGISTER_BYTE (O0_REGNUM), (VALBUF),         \
// OBSOLETE 			  TYPE_LENGTH (TYPE));                         \
// OBSOLETE   }
// OBSOLETE 
// OBSOLETE #endif /* GDB_MULTI_ARCH */
// OBSOLETE 
// OBSOLETE extern void sparclet_do_registers_info (int regnum, int all);
// OBSOLETE #undef DEPRECATED_DO_REGISTERS_INFO
// OBSOLETE #define DEPRECATED_DO_REGISTERS_INFO(REGNUM,ALL) sparclet_do_registers_info (REGNUM, ALL)
// OBSOLETE 
// OBSOLETE 
// OBSOLETE /* Offsets into jmp_buf.  Not defined by Sun, but at least documented in a
// OBSOLETE    comment in <machine/setjmp.h>! */
// OBSOLETE 
// OBSOLETE #define JB_ELEMENT_SIZE 4	/* Size of each element in jmp_buf */
// OBSOLETE 
// OBSOLETE #define JB_ONSSTACK 0
// OBSOLETE #define JB_SIGMASK 1
// OBSOLETE #define JB_SP 2
// OBSOLETE #define JB_PC 3
// OBSOLETE #define JB_NPC 4
// OBSOLETE #define JB_PSR 5
// OBSOLETE #define JB_G1 6
// OBSOLETE #define JB_O0 7
// OBSOLETE #define JB_WBCNT 8
// OBSOLETE 
// OBSOLETE /* Figure out where the longjmp will land.  We expect that we have just entered
// OBSOLETE    longjmp and haven't yet setup the stack frame, so the args are still in the
// OBSOLETE    output regs.  %o0 (O0_REGNUM) points at the jmp_buf structure from which we
// OBSOLETE    extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
// OBSOLETE    This routine returns true on success */
// OBSOLETE 
// OBSOLETE extern int get_longjmp_target (CORE_ADDR *);
// OBSOLETE 
// OBSOLETE #define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)