powerpc: Move branch instruction from ACCOUNT_CPU_USER_ENTRY to caller
[PATCH 1/6] powerpc: Move branch instruction from ACCOUNT_CPU_USER_ENTRY to caller The first instruction in ACCOUNT_CPU_USER_ENTRY is 'beq' which checks for exceptions coming from kernel mode. PPR value will be saved immediately after ACCOUNT_CPU_USER_ENTRY and is also for user level exceptions. So moved this branch instruction in the caller code. Signed-off-by: Haren Myneni <haren@us.ibm.com> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:

committed by
Benjamin Herrenschmidt

parent
15fab56eca
commit
5d75b26443
@@ -224,8 +224,9 @@ do_kvm_##n: \
|
||||
std r10,0(r1); /* make stack chain pointer */ \
|
||||
std r0,GPR0(r1); /* save r0 in stackframe */ \
|
||||
std r10,GPR1(r1); /* save r1 in stackframe */ \
|
||||
beq 4f; /* if from kernel mode */ \
|
||||
ACCOUNT_CPU_USER_ENTRY(r9, r10); \
|
||||
std r2,GPR2(r1); /* save r2 in stackframe */ \
|
||||
4: std r2,GPR2(r1); /* save r2 in stackframe */ \
|
||||
SAVE_4GPRS(3, r1); /* save r3 - r6 in stackframe */ \
|
||||
SAVE_2GPRS(7, r1); /* save r7, r8 in stackframe */ \
|
||||
ld r9,area+EX_R9(r13); /* move r9, r10 to stackframe */ \
|
||||
|
@@ -30,7 +30,6 @@
|
||||
#define ACCOUNT_STOLEN_TIME
|
||||
#else
|
||||
#define ACCOUNT_CPU_USER_ENTRY(ra, rb) \
|
||||
beq 2f; /* if from kernel mode */ \
|
||||
MFTB(ra); /* get timebase */ \
|
||||
ld rb,PACA_STARTTIME_USER(r13); \
|
||||
std ra,PACA_STARTTIME(r13); \
|
||||
@@ -38,7 +37,6 @@
|
||||
ld ra,PACA_USER_TIME(r13); \
|
||||
add ra,ra,rb; /* add on to user time */ \
|
||||
std ra,PACA_USER_TIME(r13); \
|
||||
2:
|
||||
|
||||
#define ACCOUNT_CPU_USER_EXIT(ra, rb) \
|
||||
MFTB(ra); /* get timebase */ \
|
||||
|
Reference in New Issue
Block a user