Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 169598
b: refs/heads/master
c: 6f26353
h: refs/heads/master
v: v3
  • Loading branch information
Anton Blanchard authored and Paul Mackerras committed Oct 28, 2009
1 parent f713f4c commit c544a3a
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 21 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c8cd093a6e9f96ea6b871576fd4e46d7c818bb89
refs/heads/master: 6f26353ca29e96475208bce673efb6a2c58b73f2
9 changes: 5 additions & 4 deletions trunk/arch/powerpc/include/asm/trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ extern void hcall_tracepoint_unregfunc(void);

TRACE_EVENT_FN(hcall_entry,

TP_PROTO(unsigned long opcode),
TP_PROTO(unsigned long opcode, unsigned long *args),

TP_ARGS(opcode),
TP_ARGS(opcode, args),

TP_STRUCT__entry(
__field(unsigned long, opcode)
Expand All @@ -101,9 +101,10 @@ TRACE_EVENT_FN(hcall_entry,

TRACE_EVENT_FN(hcall_exit,

TP_PROTO(unsigned long opcode, unsigned long retval),
TP_PROTO(unsigned long opcode, unsigned long retval,
unsigned long *retbuf),

TP_ARGS(opcode, retval),
TP_ARGS(opcode, retval, retbuf),

TP_STRUCT__entry(
__field(unsigned long, opcode)
Expand Down
31 changes: 21 additions & 10 deletions trunk/arch/powerpc/platforms/pseries/hvCall.S
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ hcall_tracepoint_refcount:
* in early init (eg when populating the MMU hashtable) by using an
* unconditional cpu feature.
*/
#define HCALL_INST_PRECALL \
#define HCALL_INST_PRECALL(FIRST_REG) \
BEGIN_FTR_SECTION; \
b 1f; \
END_FTR_SECTION(0, 1); \
Expand All @@ -47,6 +47,7 @@ END_FTR_SECTION(0, 1); \
std r9,STK_PARM(r9)(r1); \
std r10,STK_PARM(r10)(r1); \
std r0,16(r1); \
addi r4,r1,STK_PARM(FIRST_REG); \
stdu r1,-STACK_FRAME_OVERHEAD(r1); \
bl .__trace_hcall_entry; \
addi r1,r1,STACK_FRAME_OVERHEAD; \
Expand All @@ -68,7 +69,7 @@ END_FTR_SECTION(0, 1); \
* in early init (eg when populating the MMU hashtable) by using an
* unconditional cpu feature.
*/
#define HCALL_INST_POSTCALL \
#define __HCALL_INST_POSTCALL \
BEGIN_FTR_SECTION; \
b 1f; \
END_FTR_SECTION(0, 1); \
Expand All @@ -88,9 +89,19 @@ END_FTR_SECTION(0, 1); \
ld r3,STK_PARM(r3)(r1); \
mtlr r0; \
1:

#define HCALL_INST_POSTCALL_NORETS \
li r5,0; \
__HCALL_INST_POSTCALL

#define HCALL_INST_POSTCALL(BUFREG) \
mr r5,BUFREG; \
__HCALL_INST_POSTCALL

#else
#define HCALL_INST_PRECALL
#define HCALL_INST_POSTCALL
#define HCALL_INST_PRECALL(FIRST_ARG)
#define HCALL_INST_POSTCALL_NORETS
#define HCALL_INST_POSTCALL(BUFREG)
#endif

.text
Expand All @@ -101,11 +112,11 @@ _GLOBAL(plpar_hcall_norets)
mfcr r0
stw r0,8(r1)

HCALL_INST_PRECALL
HCALL_INST_PRECALL(r4)

HVSC /* invoke the hypervisor */

HCALL_INST_POSTCALL
HCALL_INST_POSTCALL_NORETS

lwz r0,8(r1)
mtcrf 0xff,r0
Expand All @@ -117,7 +128,7 @@ _GLOBAL(plpar_hcall)
mfcr r0
stw r0,8(r1)

HCALL_INST_PRECALL
HCALL_INST_PRECALL(r5)

std r4,STK_PARM(r4)(r1) /* Save ret buffer */

Expand All @@ -136,7 +147,7 @@ _GLOBAL(plpar_hcall)
std r6, 16(r12)
std r7, 24(r12)

HCALL_INST_POSTCALL
HCALL_INST_POSTCALL(r12)

lwz r0,8(r1)
mtcrf 0xff,r0
Expand Down Expand Up @@ -183,7 +194,7 @@ _GLOBAL(plpar_hcall9)
mfcr r0
stw r0,8(r1)

HCALL_INST_PRECALL
HCALL_INST_PRECALL(r5)

std r4,STK_PARM(r4)(r1) /* Save ret buffer */

Expand Down Expand Up @@ -211,7 +222,7 @@ _GLOBAL(plpar_hcall9)
std r11,56(r12)
std r0, 64(r12)

HCALL_INST_POSTCALL
HCALL_INST_POSTCALL(r12)

lwz r0,8(r1)
mtcrf 0xff,r0
Expand Down
5 changes: 3 additions & 2 deletions trunk/arch/powerpc/platforms/pseries/hvCall_inst.c
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ static const struct file_operations hcall_inst_seq_fops = {
#define CPU_NAME_BUF_SIZE 32


static void probe_hcall_entry(unsigned long opcode)
static void probe_hcall_entry(unsigned long opcode, unsigned long *args)
{
struct hcall_stats *h;

Expand All @@ -114,7 +114,8 @@ static void probe_hcall_entry(unsigned long opcode)
h->purr_start = mfspr(SPRN_PURR);
}

static void probe_hcall_exit(unsigned long opcode, unsigned long retval)
static void probe_hcall_exit(unsigned long opcode, unsigned long retval,
unsigned long *retbuf)
{
struct hcall_stats *h;

Expand Down
9 changes: 5 additions & 4 deletions trunk/arch/powerpc/platforms/pseries/lpar.c
Original file line number Diff line number Diff line change
Expand Up @@ -683,13 +683,14 @@ void hcall_tracepoint_unregfunc(void)
hcall_tracepoint_refcount--;
}

void __trace_hcall_entry(unsigned long opcode)
void __trace_hcall_entry(unsigned long opcode, unsigned long *args)
{
trace_hcall_entry(opcode);
trace_hcall_entry(opcode, args);
}

void __trace_hcall_exit(long opcode, unsigned long retval)
void __trace_hcall_exit(long opcode, unsigned long retval,
unsigned long *retbuf)
{
trace_hcall_exit(opcode, retval);
trace_hcall_exit(opcode, retval, retbuf);
}
#endif

0 comments on commit c544a3a

Please sign in to comment.