Commit 246e6a0d authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel

Pull Hexagon fixes from Richard Kuo:
 "A bug fix and a Kconfig cleanup"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rkuo/linux-hexagon-kernel:
  HEXAGON: Remove non existent reference to GENERIC_KERNEL_EXECVE & GENERIC_KERNEL_THREAD
  Hexagon: fix register used to call do_work_pending
parents 956e46ef de44443a
...@@ -30,8 +30,6 @@ config HEXAGON ...@@ -30,8 +30,6 @@ config HEXAGON
select GENERIC_CLOCKEVENTS_BROADCAST select GENERIC_CLOCKEVENTS_BROADCAST
select MODULES_USE_ELF_RELA select MODULES_USE_ELF_RELA
select GENERIC_CPU_DEVICES select GENERIC_CPU_DEVICES
select GENERIC_KERNEL_THREAD
select GENERIC_KERNEL_EXECVE
---help--- ---help---
Qualcomm Hexagon is a processor architecture designed for high Qualcomm Hexagon is a processor architecture designed for high
performance and low power across a wide variety of applications. performance and low power across a wide variety of applications.
......
...@@ -291,12 +291,12 @@ event_dispatch: ...@@ -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: ...@@ -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: ...@@ -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: ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment