GDB (xrefs)
Loading...
Searching...
No Matches
Macros | Functions | Variables
ppc64-tdep.c File Reference
#include "defs.h"
#include "frame.h"
#include "gdbcore.h"
#include "infrun.h"
#include "ppc-tdep.h"
#include "ppc64-tdep.h"
#include "elf-bfd.h"

Go to the source code of this file.

Macros

#define insn_d(opcd, rts, ra, d)
 
#define insn_ds(opcd, rts, ra, d, xo)
 
#define insn_xfx(opcd, rts, spr, xo)
 
#define prefix(a, b, R, do)
 
#define insn_md(opcd, ra, rs, sh, me, rc)
 
#define insn_x(opcd, rt, ra, rb, opc2)
 
#define insn_xo(opcd, rt, ra, rb, oe, rc, opc2)
 
#define MAX(a, b)   ((a) > (b) ? (a) : (b))
 

Functions

static CORE_ADDR ppc64_plt_entry_point (frame_info_ptr frame, CORE_ADDR plt_off)
 
static CORE_ADDR ppc64_plt_pcrel_entry_point (frame_info_ptr frame, CORE_ADDR plt_off, CORE_ADDR pc)
 
static CORE_ADDR ppc64_standard_linkage1_target (frame_info_ptr frame, unsigned int *insn)
 
static CORE_ADDR ppc64_standard_linkage2_target (frame_info_ptr frame, unsigned int *insn)
 
static CORE_ADDR ppc64_standard_linkage3_target (frame_info_ptr frame, unsigned int *insn)
 
static CORE_ADDR ppc64_standard_linkage4_target (frame_info_ptr frame, unsigned int *insn)
 
static CORE_ADDR ppc64_pcrel_linkage1_target (frame_info_ptr frame, unsigned int *insn, CORE_ADDR pc)
 
static CORE_ADDR ppc64_pcrel_linkage2_target (frame_info_ptr frame, unsigned int *insn, CORE_ADDR pc)
 
static CORE_ADDR ppc64_skip_trampoline_code_1 (frame_info_ptr frame, CORE_ADDR pc)
 
CORE_ADDR ppc64_skip_trampoline_code (frame_info_ptr frame, CORE_ADDR pc)
 
CORE_ADDR ppc64_convert_from_func_ptr_addr (struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
 
void ppc64_elf_make_msymbol_special (asymbol *sym, struct minimal_symbol *msym)
 

Variables

static const struct ppc_insn_pattern ppc64_standard_linkage1 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage2 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage3 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage4 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage5 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage6 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage7 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage8 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage9 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage10 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage11 []
 
static const struct ppc_insn_pattern ppc64_standard_linkage12 []
 

Macro Definition Documentation

◆ insn_d

#define insn_d (   opcd,
  rts,
  ra,
 
)
Value:
((((unsigned (opcd)) & 0x3f) << 26) \
| (((unsigned (rts)) & 0x1f) << 21) \
| (((unsigned (ra)) & 0x1f) << 16) \
| ((unsigned (d)) & 0xffff))

Definition at line 32 of file ppc64-tdep.c.

◆ insn_ds

#define insn_ds (   opcd,
  rts,
  ra,
  d,
  xo 
)
Value:
((((unsigned (opcd)) & 0x3f) << 26) \
| (((unsigned (rts)) & 0x1f) << 21) \
| (((unsigned (ra)) & 0x1f) << 16) \
| ((unsigned (d)) & 0xfffc) \
| ((unsigned (xo)) & 0x3))

Definition at line 38 of file ppc64-tdep.c.

◆ insn_md

#define insn_md (   opcd,
  ra,
  rs,
  sh,
  me,
  rc 
)
Value:
((((unsigned (opcd)) & 0x3f) << 26) \
| (((unsigned (rs)) & 0x1f) << 21) \
| (((unsigned (ra)) & 0x1f) << 16) \
| (((unsigned (sh)) & 0x3e) << 11) \
| (((unsigned (me)) & 0x3f) << 25) \
| (((unsigned (sh)) & 0x1) << 1) \
| ((unsigned (rc)) & 0x1))

Definition at line 59 of file ppc64-tdep.c.

◆ insn_x

#define insn_x (   opcd,
  rt,
  ra,
  rb,
  opc2 
)
Value:
((((unsigned (opcd)) & 0x3f) << 26) \
| (((unsigned (rt)) & 0x1f) << 21) \
| (((unsigned (ra)) & 0x1f) << 16) \
| (((unsigned (rb)) & 0x3e) << 11) \
| (((unsigned (opc2)) & 0x3FF) << 1))

Definition at line 68 of file ppc64-tdep.c.

◆ insn_xfx

#define insn_xfx (   opcd,
  rts,
  spr,
  xo 
)
Value:
((((unsigned (opcd)) & 0x3f) << 26) \
| (((unsigned (rts)) & 0x1f) << 21) \
| (((unsigned (spr)) & 0x1f) << 16) \
| (((unsigned (spr)) & 0x3e0) << 6) \
| (((unsigned (xo)) & 0x3ff) << 1))

Definition at line 45 of file ppc64-tdep.c.

◆ insn_xo

#define insn_xo (   opcd,
  rt,
  ra,
  rb,
  oe,
  rc,
  opc2 
)
Value:
((((unsigned (opcd)) & 0x3f) << 26) \
| (((unsigned (rt)) & 0x1f) << 21) \
| (((unsigned (ra)) & 0x1f) << 16) \
| (((unsigned (rb)) & 0x3e) << 11) \
| (((unsigned (oe)) & 0x1) << 10) \
| (((unsigned (opc2)) & 0x1FF) << 1) \
| (((unsigned (rc)))))

Definition at line 75 of file ppc64-tdep.c.

◆ MAX

#define MAX (   a,
 
)    ((a) > (b) ? (a) : (b))

◆ prefix

#define prefix (   a,
  b,
  R,
  do 
)
Value:
(((0x1) << 26) \
| (((unsigned (a)) & 0x3) << 24) \
| (((unsigned (b)) & 0x1) << 23) \
| (((unsigned (R)) & 0x1) << 20) \
| ((unsigned (do)) & 0x3ffff))
#define R(name, type, sim_num)
Definition m32c-tdep.c:729

Definition at line 52 of file ppc64-tdep.c.

Function Documentation

◆ ppc64_convert_from_func_ptr_addr()

CORE_ADDR ppc64_convert_from_func_ptr_addr ( struct gdbarch gdbarch,
CORE_ADDR  addr,
struct target_ops targ 
)

◆ ppc64_elf_make_msymbol_special()

void ppc64_elf_make_msymbol_special ( asymbol *  sym,
struct minimal_symbol msym 
)

Definition at line 796 of file ppc64-tdep.c.

References minimal_symbol::set_size().

Referenced by ppc_linux_init_abi(), and ppcfbsd_init_abi().

◆ ppc64_pcrel_linkage1_target()

static CORE_ADDR ppc64_pcrel_linkage1_target ( frame_info_ptr  frame,
unsigned int *  insn,
CORE_ADDR  pc 
)
static

Definition at line 584 of file ppc64-tdep.c.

References ppc64_plt_pcrel_entry_point(), and ppc_insn_prefix_dform().

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_pcrel_linkage2_target()

static CORE_ADDR ppc64_pcrel_linkage2_target ( frame_info_ptr  frame,
unsigned int *  insn,
CORE_ADDR  pc 
)
static

Definition at line 594 of file ppc64-tdep.c.

References ppc64_plt_pcrel_entry_point(), and ppc_insn_prefix_dform().

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_plt_entry_point()

static CORE_ADDR ppc64_plt_entry_point ( frame_info_ptr  frame,
CORE_ADDR  plt_off 
)
static

◆ ppc64_plt_pcrel_entry_point()

static CORE_ADDR ppc64_plt_pcrel_entry_point ( frame_info_ptr  frame,
CORE_ADDR  plt_off,
CORE_ADDR  pc 
)
static

◆ ppc64_skip_trampoline_code()

CORE_ADDR ppc64_skip_trampoline_code ( frame_info_ptr  frame,
CORE_ADDR  pc 
)

◆ ppc64_skip_trampoline_code_1()

static CORE_ADDR ppc64_skip_trampoline_code_1 ( frame_info_ptr  frame,
CORE_ADDR  pc 
)
static

◆ ppc64_standard_linkage1_target()

static CORE_ADDR ppc64_standard_linkage1_target ( frame_info_ptr  frame,
unsigned int *  insn 
)
static

◆ ppc64_standard_linkage2_target()

static CORE_ADDR ppc64_standard_linkage2_target ( frame_info_ptr  frame,
unsigned int *  insn 
)
static

◆ ppc64_standard_linkage3_target()

static CORE_ADDR ppc64_standard_linkage3_target ( frame_info_ptr  frame,
unsigned int *  insn 
)
static

Definition at line 567 of file ppc64-tdep.c.

References ppc64_plt_entry_point(), and ppc_insn_ds_field().

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage4_target()

static CORE_ADDR ppc64_standard_linkage4_target ( frame_info_ptr  frame,
unsigned int *  insn 
)
static

Variable Documentation

◆ ppc64_standard_linkage1

const struct ppc_insn_pattern ppc64_standard_linkage1[]
static

Definition at line 127 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage10

const struct ppc_insn_pattern ppc64_standard_linkage10[]
static
Initial value:
=
{
{ insn_ds (-1, -1, -1, 0, 1), insn_ds (62, 2, 1, 40, 0), 1 },
{ prefix (-1, -1, 1, 0), prefix (2, 0, 1, 0), 0 },
{ insn_d (-1, -1, -1, 0), insn_d (14, 12, 0, 0), 0 },
{ insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
{ (unsigned) -1, 0x4e800420, 0 },
{ 0, 0, 0 }
}
#define insn_d(opcd, rts, ra, d)
Definition ppc64-tdep.c:32
#define insn_ds(opcd, rts, ra, d, xo)
Definition ppc64-tdep.c:38
#define insn_xfx(opcd, rts, spr, xo)
Definition ppc64-tdep.c:45
#define prefix(a, b, R, do)
Definition ppc64-tdep.c:52

Definition at line 408 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage11

const struct ppc_insn_pattern ppc64_standard_linkage11[]
static
Initial value:
=
{
{ insn_ds (-1, -1, -1, 0, 1), insn_ds (62, 2, 1, 40, 0), 1 },
{ insn_d (-1, -1, -1, 0), insn_d (14, 11, 0, 0), 1 },
{ insn_md (-1, -1, -1, 0, 0, 1), insn_md (30, 11, 11, 34, 63-34, 0), 1 },
{ prefix (-1, -1, 1, 0), prefix (2, 0, 1, 0), 0 },
{ insn_d (-1, -1, -1, 0), insn_d (14, 12, 0, 0), 0 },
{ (unsigned) -1, insn_x (31, 12, 11, 12, 21), 1 },
{ (unsigned) -1, insn_xo (31, 12, 11, 12, 0, 0, 40), 1 },
{ insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
{ (unsigned) -1, 0x4e800420, 0 },
{ 0, 0, 0 }
}
#define insn_x(opcd, rt, ra, rb, opc2)
Definition ppc64-tdep.c:68
#define insn_md(opcd, ra, rs, sh, me, rc)
Definition ppc64-tdep.c:59
#define insn_xo(opcd, rt, ra, rb, oe, rc, opc2)
Definition ppc64-tdep.c:75

Definition at line 426 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage12

const struct ppc_insn_pattern ppc64_standard_linkage12[]
static

Definition at line 456 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage2

const struct ppc_insn_pattern ppc64_standard_linkage2[]
static

Definition at line 166 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage3

const struct ppc_insn_pattern ppc64_standard_linkage3[]
static

Definition at line 209 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage4

const struct ppc_insn_pattern ppc64_standard_linkage4[]
static

Definition at line 248 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage5

const struct ppc_insn_pattern ppc64_standard_linkage5[]
static

Definition at line 290 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage6

const struct ppc_insn_pattern ppc64_standard_linkage6[]
static
Initial value:
=
{
{ (unsigned) -1, insn_ds (62, 2, 1, 24, 0), 1 },
{ insn_d (-1, -1, -1, 0), insn_d (15, 11, 2, 0), 0 },
{ insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 12, 11, 0, 0), 0 },
{ insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
{ (unsigned) -1, 0x4e800420, 0 },
{ 0, 0, 0 }
}

Definition at line 327 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage7

const struct ppc_insn_pattern ppc64_standard_linkage7[]
static
Initial value:
=
{
{ (unsigned) -1, insn_ds (62, 2, 1, 24, 0), 1 },
{ insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 12, 2, 0, 0), 0 },
{ insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
{ (unsigned) -1, 0x4e800420, 0 },
{ 0, 0, 0 }
}

Definition at line 349 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage8

const struct ppc_insn_pattern ppc64_standard_linkage8[]
static
Initial value:
=
{
{ (unsigned) -1, insn_ds (62, 2, 1, 24, 0), 1 },
{ insn_d (-1, -1, -1, 0), insn_d (15, 12, 2, 0), 0 },
{ insn_ds (-1, -1, -1, 0, -1), insn_ds (58, 12, 12, 0, 0), 0 },
{ insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
{ (unsigned) -1, 0x4e800420, 0 },
{ 0, 0, 0 }
}

Definition at line 369 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().

◆ ppc64_standard_linkage9

const struct ppc_insn_pattern ppc64_standard_linkage9[]
static
Initial value:
=
{
{ insn_ds (-1, -1, -1, 0, 1), insn_ds (62, 2, 1, 40, 0), 1 },
{ prefix (-1, -1, 1, 0), prefix (0, 0, 1, 0), 0 },
{ insn_d (-1, -1, -1, 0), insn_d (57, 12, 0, 0), 0 },
{ insn_xfx (-1, -1, -1, -1), insn_xfx (31, 12, 9, 467), 0 },
{ (unsigned) -1, 0x4e800420, 0 },
{ 0, 0, 0 }
}

Definition at line 390 of file ppc64-tdep.c.

Referenced by ppc64_skip_trampoline_code_1().