OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [gdb/] [config/] [m68k/] [tm-delta68.h] - Blame information for rev 1771

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* Target definitions for delta68.
2
   Copyright 1993, 1994, 1998, 1999, 2000 Free Software Foundation, Inc.
3
 
4
   This file is part of GDB.
5
 
6
   This program is free software; you can redistribute it and/or modify
7
   it under the terms of the GNU General Public License as published by
8
   the Free Software Foundation; either version 2 of the License, or
9
   (at your option) any later version.
10
 
11
   This program is distributed in the hope that it will be useful,
12
   but WITHOUT ANY WARRANTY; without even the implied warranty of
13
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
   GNU General Public License for more details.
15
 
16
   You should have received a copy of the GNU General Public License
17
   along with this program; if not, write to the Free Software
18
   Foundation, Inc., 59 Temple Place - Suite 330,
19
   Boston, MA 02111-1307, USA.  */
20
 
21
#include "regcache.h"
22
 
23
/* Define BPT_VECTOR if it is different than the default.
24
   This is the vector number used by traps to indicate a breakpoint. */
25
 
26
#define BPT_VECTOR 0x1
27
 
28
#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled%"
29
#define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled%"
30
 
31
/* Amount PC must be decremented by after a breakpoint.
32
   On the Delta, the kernel decrements it for us.  */
33
 
34
#define DECR_PC_AFTER_BREAK 0
35
 
36
/* Not sure what happens if we try to store this register, but
37
   phdm@info.ucl.ac.be says we need this define.  */
38
 
39
#define CANNOT_STORE_REGISTER(regno)    (regno == FPI_REGNUM)
40
 
41
/* Extract from an array REGBUF containing the (raw) register state
42
   a function return value of type TYPE, and copy that, in virtual format,
43
   into VALBUF.  */
44
 
45
/* When it returns a float/double value, use fp0 in sysV68.  */
46
/* When it returns a pointer value, use a0 in sysV68.  */
47
 
48
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF)                        \
49
  if (TYPE_CODE (TYPE) == TYPE_CODE_FLT)                                \
50
    REGISTER_CONVERT_TO_VIRTUAL (FP0_REGNUM, TYPE,                      \
51
                                 &REGBUF[REGISTER_BYTE (FP0_REGNUM)],   \
52
                                 VALBUF);                               \
53
  else                                                                  \
54
    memcpy ((VALBUF),                                                   \
55
            (char *) ((REGBUF) +                                        \
56
                      (TYPE_CODE(TYPE) == TYPE_CODE_PTR ? 8 * 4 :       \
57
                       (TYPE_LENGTH(TYPE) >= 4 ? 0 : 4 - TYPE_LENGTH(TYPE)))), \
58
            TYPE_LENGTH(TYPE))
59
 
60
/* Write into appropriate registers a function return value
61
   of type TYPE, given in virtual format.  */
62
 
63
/* When it returns a float/double value, use fp0 in sysV68.  */
64
/* When it returns a pointer value, use a0 in sysV68.  */
65
 
66
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
67
  if (TYPE_CODE (TYPE) == TYPE_CODE_FLT)                                \
68
      {                                                                 \
69
        char raw_buf[REGISTER_RAW_SIZE (FP0_REGNUM)];                   \
70
        REGISTER_CONVERT_TO_RAW (TYPE, FP0_REGNUM, VALBUF, raw_buf);    \
71
        write_register_bytes (REGISTER_BYTE (FP0_REGNUM),               \
72
                              raw_buf, REGISTER_RAW_SIZE (FP0_REGNUM)); \
73
      }                                                                 \
74
  else                                                                  \
75
    write_register_bytes ((TYPE_CODE(TYPE) == TYPE_CODE_PTR ? 8 * 4 : 0), \
76
                          VALBUF, TYPE_LENGTH (TYPE))
77
 
78
/* Return number of args passed to a frame.
79
   Can return -1, meaning no way to tell.  */
80
 
81
extern int delta68_frame_num_args (struct frame_info *fi);
82
#define FRAME_NUM_ARGS(fi) (delta68_frame_num_args ((fi)))
83
 
84
/* On M68040 versions of sysV68 R3V7.1, ptrace(PT_WRITE_I) does not clear
85
   the processor's instruction cache as it should.  */
86
#define CLEAR_INSN_CACHE()      clear_insn_cache()
87
 
88
#include "m68k/tm-m68k.h"
89
 
90
/* Extract from an array REGBUF containing the (raw) register state
91
   the address in which a function should return its structure value,
92
   as a CORE_ADDR (or an expression that can be used as one).  */
93
 
94
#undef EXTRACT_STRUCT_VALUE_ADDRESS
95
#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF)\
96
        (*(CORE_ADDR *)((char*)(REGBUF) + 8 * 4))
97
 
98
extern int delta68_in_sigtramp (CORE_ADDR pc, char *name);
99
#define IN_SIGTRAMP(pc,name) delta68_in_sigtramp (pc, name)
100
 
101
extern CORE_ADDR delta68_frame_saved_pc (struct frame_info *fi);
102
#undef FRAME_SAVED_PC
103
#define FRAME_SAVED_PC(fi) delta68_frame_saved_pc (fi)
104
 
105
extern CORE_ADDR delta68_frame_args_address (struct frame_info *fi);
106
#undef FRAME_ARGS_ADDRESS
107
#define FRAME_ARGS_ADDRESS(fi) delta68_frame_args_address (fi)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.