Skip to content

Commit

Permalink
Hexagon: fix register used to call do_work_pending
Browse files Browse the repository at this point in the history
ABI v2 callee saves start at R24.

Signed-off-by: Richard Kuo <rkuo@codeaurora.org>
  • Loading branch information
Richard Kuo committed May 7, 2013
1 parent 426d29c commit 13a95c4
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions arch/hexagon/kernel/vm_entry.S
Original file line number Diff line number Diff line change
Expand Up @@ -291,20 +291,20 @@ event_dispatch:
/* "Nested control path" -- if the previous mode was kernel */
{
R0 = memw(R29 + #_PT_ER_VMEST);
R16.L = #LO(do_work_pending);
R26.L = #LO(do_work_pending);
}
{
P0 = tstbit(R0, #HVM_VMEST_UM_SFT);
if (!P0.new) jump:nt restore_all;
R16.H = #HI(do_work_pending);
R26.H = #HI(do_work_pending);
R0 = #VM_INT_DISABLE;
}

/*
* Check also the return from fork/system call, normally coming back from
* user mode
*
* R16 needs to have do_work_pending, and R0 should have VM_INT_DISABLE
* R26 needs to have do_work_pending, and R0 should have VM_INT_DISABLE
*/

check_work_pending:
Expand All @@ -313,7 +313,7 @@ check_work_pending:
{
R0 = R29; /* regs should still be at top of stack */
R1 = memw(THREADINFO_REG + #_THREAD_INFO_FLAGS);
callr R16;
callr R26;
}

{
Expand Down Expand Up @@ -375,11 +375,11 @@ _K_enter_debug:
ret_from_fork:
{
call schedule_tail
R16.H = #HI(do_work_pending);
R26.H = #HI(do_work_pending);
}
{
P0 = cmp.eq(R24, #0);
R16.L = #LO(do_work_pending);
R26.L = #LO(do_work_pending);
R0 = #VM_INT_DISABLE;
}
if P0 jump check_work_pending
Expand Down

0 comments on commit 13a95c4

Please sign in to comment.