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,
d )
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,
b )   ((a) > (b) ? (a) : (b))

◆ prefix

#define prefix ( a,
b,
R,
do )

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().