30 #define m68k_num_regs 29
31 #define m68k_num_gregs 18
37 PT_D0 * 4, PT_D1 * 4, PT_D2 * 4, PT_D3 * 4,
38 PT_D4 * 4, PT_D5 * 4, PT_D6 * 4, PT_D7 * 4,
39 PT_A0 * 4, PT_A1 * 4, PT_A2 * 4, PT_A3 * 4,
40 PT_A4 * 4, PT_A5 * 4, PT_A6 * 4, PT_USP * 4,
43 14 * 4, 0 * 4, 1 * 4, 2 * 4, 3 * 4, 4 * 4, 5 * 4, 6 * 4,
44 7 * 4, 8 * 4, 9 * 4, 10 * 4, 11 * 4, 12 * 4, 13 * 4, 15 * 4,
48 PT_FP0 * 4, PT_FP1 * 4, PT_FP2 * 4, PT_FP3 * 4,
49 PT_FP4 * 4, PT_FP5 * 4, PT_FP6 * 4, PT_FP7 * 4,
50 PT_FPCR * 4, PT_FPSR * 4, PT_FPIAR * 4
52 21 * 4, 24 * 4, 27 * 4, 30 * 4, 33 * 4, 36 * 4,
53 39 * 4, 42 * 4, 45 * 4, 46 * 4, 47 * 4
60 return (regno >= m68k_num_regs);
66 return (regno >= m68k_num_regs);
69 #ifdef HAVE_PTRACE_GETREGS
70 #include <sys/procfs.h>
71 #include <sys/ptrace.h>
74 m68k_fill_gregset (
struct regcache *regcache,
void *buf)
83 m68k_store_gregset (
struct regcache *regcache,
const void *buf)
92 m68k_fill_fpregset (
struct regcache *regcache,
void *buf)
98 + (m68k_regmap[i] - m68k_regmap[m68k_num_gregs])));
102 m68k_store_fpregset (
struct regcache *regcache,
const void *buf)
108 + (m68k_regmap[i] - m68k_regmap[m68k_num_gregs])));
113 static struct regset_info m68k_regsets[] = {
114 #ifdef HAVE_PTRACE_GETREGS
115 { PTRACE_GETREGS, PTRACE_SETREGS, 0,
sizeof (elf_gregset_t),
117 m68k_fill_gregset, m68k_store_gregset },
118 { PTRACE_GETFPREGS, PTRACE_SETFPREGS, 0,
sizeof (elf_fpregset_t),
120 m68k_fill_fpregset, m68k_store_fpregset },
122 { 0, 0, 0, -1, -1, NULL, NULL }
125 static const unsigned char m68k_breakpoint[] = { 0x4E, 0x4F };
126 #define m68k_breakpoint_len 2
140 unsigned long newpc = value;
151 if (c[0] == 0x4E && c[1] == 0x4F)
157 #include <asm/ptrace.h>
159 #ifdef PTRACE_GET_THREAD_AREA
164 lwpid_t lwpid,
int idx,
void **base)
172 *base = (
void *) ((
char *)*base - idx);
178 static struct regsets_info m68k_regsets_info =
191 static struct regs_info regs_info =
198 static const struct regs_info *
231 initialize_regsets_info (&m68k_regsets_info);
void collect_register(struct regcache *regcache, int n, void *buf)
void supply_register_by_name(struct regcache *regcache, const char *name, const void *buf)
static int m68k_cannot_store_register(int regno)
static struct usrregs_info m68k_usrregs_info
void init_registers_m68k(void)
const struct target_desc * tdesc
void collect_register_by_name(struct regcache *regcache, const char *name, void *buf)
void initialize_low_arch(void)
int read_inferior_memory(CORE_ADDR memaddr, unsigned char *myaddr, int len)
#define m68k_breakpoint_len
static void m68k_set_pc(struct regcache *regcache, CORE_ADDR value)
const struct target_desc * tdesc_m68k
struct process_info * current_process(void)
static const unsigned char m68k_breakpoint[]
static int m68k_breakpoint_at(CORE_ADDR pc)
static const struct regs_info * m68k_regs_info(void)
static struct regset_info m68k_regsets[]
static struct regs_info regs_info
ps_err_e ps_get_thread_area(const struct ps_prochandle *, lwpid_t, int, psaddr_t *)
static int m68k_cannot_fetch_register(int regno)
#define PTRACE_GET_THREAD_AREA
void supply_register(struct regcache *regcache, int n, const void *buf)
static CORE_ADDR m68k_get_pc(struct regcache *regcache)
static void m68k_arch_setup(void)