PARAMS removal.
[deliverable/binutils-gdb.git] / gdb / config / v850 / tm-v850.h
CommitLineData
c906108c
SS
1/* Parameters for execution on an NEC V850 processor.
2 Copyright 1996
3 Free Software Foundation, Inc.
4
c5aa993b 5 This file is part of GDB.
c906108c 6
c5aa993b
JM
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
c906108c 11
c5aa993b
JM
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
c906108c 16
c5aa993b
JM
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. */
c906108c
SS
21
22#define TARGET_BYTE_ORDER LITTLE_ENDIAN
23
24#define NUM_REGS 66
25
26#define REGISTER_NAMES \
27{ "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", \
28 "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", \
29 "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", \
30 "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", \
31 \
32 "eipc", "eipsw", "fepc", "fepsw", "ecr", "psw", "sr6", "sr7", \
33 "sr8", "sr9", "sr10", "sr11", "sr12", "sr13", "sr14", "sr15", \
34 "sr16", "sr17", "sr18", "sr19", "sr20", "sr21", "sr22", "sr23", \
35 "sr24", "sr25", "sr26", "sr27", "sr28", "sr29", "sr30", "sr31", \
36 \
37 "pc", "fp" }
38
39/* Initializer for an array of names of registers.
40 Entries beyond the first NUM_REGS are ignored. */
41
42extern char **v850_register_names;
43#define REGISTER_NAME(i) v850_register_names[i]
44
45
46#define REGISTER_BYTES (NUM_REGS * 4)
47
48#define REGISTER_SIZE 4
49#define MAX_REGISTER_RAW_SIZE 4
50
51#define R0_REGNUM 0
52#define R1_REGNUM 1
53#define SAVE1_START_REGNUM 2
54#define SAVE1_END_REGNUM 2
55#define SP_REGNUM 3
56#define ARG0_REGNUM 6
57#define ARGLAST_REGNUM 9
58#define V0_REGNUM 10
59#define V1_REGNUM 11
60#define R12_REGNUM 12
61#define SAVE2_START_REGNUM 20
62#define SAVE2_END_REGNUM 29
63#define EP_REGNUM 30
64#define SAVE3_START_REGNUM 31
65#define SAVE3_END_REGNUM 31
66#define RP_REGNUM 31
67#define SR0_REGNUM 32
68#define PS_REGNUM (SR0_REGNUM+5)
69#define CTBP_REGNUM (SR0_REGNUM+20)
70#define PC_REGNUM 64
71#define FP_REGNUM 65
72#define FP_RAW_REGNUM 29
73
74#define TARGET_READ_FP() read_register (FP_RAW_REGNUM)
75#define TARGET_WRITE_FP(VAL) write_register (FP_REGNUM, (VAL))
76
77#define REGISTER_VIRTUAL_TYPE(REG) builtin_type_int
78
79#define REGISTER_BYTE(REG) ((REG) * 4)
80#define REGISTER_VIRTUAL_SIZE(REG) 4
81#define REGISTER_RAW_SIZE(REG) 4
82
83#define MAX_REGISTER_VIRTUAL_SIZE 4
84
e2bdc01e 85#define BREAKPOINT {0x85, 0x05} /* little-ended */
c906108c
SS
86
87#define FUNCTION_START_OFFSET 0
88
89#define DECR_PC_AFTER_BREAK 0
90
91#define INNER_THAN(lhs,rhs) ((lhs) < (rhs))
92
93#define SAVED_PC_AFTER_CALL(fi) read_register (RP_REGNUM)
94
c906108c
SS
95struct frame_info;
96struct frame_saved_regs;
97struct type;
98struct value;
c906108c
SS
99
100#define EXTRA_FRAME_INFO struct frame_saved_regs fsr;
101
a14ed312 102extern void v850_init_extra_frame_info (struct frame_info *fi);
c906108c
SS
103#define INIT_EXTRA_FRAME_INFO(fromleaf, fi) v850_init_extra_frame_info (fi)
104#define INIT_FRAME_PC /* Not necessary */
105
a14ed312
KB
106extern void v850_frame_find_saved_regs (struct frame_info *fi,
107 struct frame_saved_regs *regaddr);
c906108c
SS
108#define FRAME_FIND_SAVED_REGS(fi, regaddr) regaddr = fi->fsr
109
a14ed312 110extern CORE_ADDR v850_frame_chain (struct frame_info *fi);
c906108c 111#define FRAME_CHAIN(fi) v850_frame_chain (fi)
c4093a6a 112#define FRAME_CHAIN_VALID(FP, FI) generic_file_frame_chain_valid (FP, FI)
c906108c 113
a14ed312
KB
114extern CORE_ADDR v850_find_callers_reg (struct frame_info *fi, int regnum);
115extern CORE_ADDR v850_frame_saved_pc (struct frame_info *);
c906108c
SS
116#define FRAME_SAVED_PC(FI) (v850_frame_saved_pc (FI))
117
118#define EXTRACT_RETURN_VALUE(TYPE, REGBUF, VALBUF) \
119 memcpy (VALBUF, REGBUF + REGISTER_BYTE (V0_REGNUM), TYPE_LENGTH (TYPE))
120
121#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
122 extract_address (REGBUF + REGISTER_BYTE (V0_REGNUM), \
123 REGISTER_RAW_SIZE (V0_REGNUM))
124
125#define STORE_RETURN_VALUE(TYPE, VALBUF) \
126 write_register_bytes(REGISTER_BYTE (V0_REGNUM), VALBUF, TYPE_LENGTH (TYPE));
127
a14ed312 128extern CORE_ADDR v850_skip_prologue (CORE_ADDR pc);
b83266a0 129#define SKIP_PROLOGUE(pc) (v850_skip_prologue (pc))
c906108c
SS
130
131#define FRAME_ARGS_SKIP 0
132
133#define FRAME_ARGS_ADDRESS(fi) ((fi)->frame)
134#define FRAME_LOCALS_ADDRESS(fi) ((fi)->frame)
392a587b 135#define FRAME_NUM_ARGS(fi) (-1)
c906108c 136
a14ed312 137extern void v850_pop_frame (struct frame_info *frame);
c906108c
SS
138#define POP_FRAME v850_pop_frame (get_current_frame ())
139
7a292a7a 140#define USE_GENERIC_DUMMY_FRAMES 1
c906108c
SS
141#define CALL_DUMMY {0}
142#define CALL_DUMMY_START_OFFSET (0)
143#define CALL_DUMMY_BREAKPOINT_OFFSET (0)
144#define CALL_DUMMY_LOCATION AT_ENTRY_POINT
145#define FIX_CALL_DUMMY(DUMMY, START, FUNADDR, NARGS, ARGS, TYPE, GCCP)
146#define CALL_DUMMY_ADDRESS() entry_point_address ()
a14ed312 147extern CORE_ADDR v850_push_return_address (CORE_ADDR, CORE_ADDR);
c906108c
SS
148#define PUSH_RETURN_ADDRESS(PC, SP) v850_push_return_address (PC, SP)
149
150
151#define PUSH_DUMMY_FRAME generic_push_dummy_frame ()
152
153extern CORE_ADDR
a14ed312
KB
154v850_push_arguments (int nargs, struct value **args, CORE_ADDR sp,
155 unsigned char struct_return, CORE_ADDR struct_addr);
c906108c 156#define PUSH_ARGUMENTS(NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR) \
392a587b 157 (v850_push_arguments (NARGS, ARGS, SP, STRUCT_RETURN, STRUCT_ADDR))
c906108c
SS
158
159#define STORE_STRUCT_RETURN(STRUCT_ADDR, SP)
160
161
7a292a7a 162#define PC_IN_CALL_DUMMY(PC, SP, FP) generic_pc_in_call_dummy (PC, SP, FP)
c906108c
SS
163
164extern use_struct_convention_fn v850_use_struct_convention;
165#define USE_STRUCT_CONVENTION(GCC_P, TYPE) v850_use_struct_convention (GCC_P, TYPE);
166
167/* override the default get_saved_register function with
168 one that takes account of generic CALL_DUMMY frames */
7a292a7a
SS
169#define GET_SAVED_REGISTER(raw_buffer, optimized, addrp, frame, regnum, lval) \
170 generic_get_saved_register (raw_buffer, optimized, addrp, frame, regnum, lval)
c906108c
SS
171
172/* Define this for Wingdb */
173
174#define TARGET_V850
This page took 0.057451 seconds and 4 git commands to generate.