Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13a95c48 authored by Richard Kuo's avatar Richard Kuo
Browse files

Hexagon: fix register used to call do_work_pending



ABI v2 callee saves start at R24.

Signed-off-by: default avatarRichard Kuo <rkuo@codeaurora.org>
parent 426d29cc
Loading
Loading
Loading
Loading
+6 −6
Original line number Original line Diff line number Diff line
@@ -291,12 +291,12 @@ event_dispatch:
	/*  "Nested control path" -- if the previous mode was kernel  */
	/*  "Nested control path" -- if the previous mode was kernel  */
	{
	{
		R0 = memw(R29 + #_PT_ER_VMEST);
		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);
		P0 = tstbit(R0, #HVM_VMEST_UM_SFT);
		if (!P0.new) jump:nt restore_all;
		if (!P0.new) jump:nt restore_all;
		R16.H = #HI(do_work_pending);
		R26.H = #HI(do_work_pending);
		R0 = #VM_INT_DISABLE;
		R0 = #VM_INT_DISABLE;
	}
	}


@@ -304,7 +304,7 @@ event_dispatch:
	 * Check also the return from fork/system call, normally coming back from
	 * Check also the return from fork/system call, normally coming back from
	 * user mode
	 * 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:
check_work_pending:
@@ -313,7 +313,7 @@ check_work_pending:
	{
	{
		R0 = R29;  /*  regs should still be at top of stack  */
		R0 = R29;  /*  regs should still be at top of stack  */
		R1 = memw(THREADINFO_REG + #_THREAD_INFO_FLAGS);
		R1 = memw(THREADINFO_REG + #_THREAD_INFO_FLAGS);
		callr R16;
		callr R26;
	}
	}


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