diff options
author | Richard Kuo <rkuo@codeaurora.org> | 2013-05-03 18:04:46 -0400 |
---|---|---|
committer | Richard Kuo <rkuo@codeaurora.org> | 2013-05-07 12:37:53 -0400 |
commit | 13a95c48136aaa4cd30a35be2210869fa7e6119f (patch) | |
tree | e4b6ffe03fbf66ebb5752f25983e179f04c27d7b | |
parent | 426d29ccb2a8d44c18d3167327ee82b38287e7bf (diff) |
Hexagon: fix register used to call do_work_pending
ABI v2 callee saves start at R24.
Signed-off-by: Richard Kuo <rkuo@codeaurora.org>
-rw-r--r-- | arch/hexagon/kernel/vm_entry.S | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/arch/hexagon/kernel/vm_entry.S b/arch/hexagon/kernel/vm_entry.S index e3086185fc9f..67c6ccc14770 100644 --- a/arch/hexagon/kernel/vm_entry.S +++ b/arch/hexagon/kernel/vm_entry.S | |||
@@ -291,12 +291,12 @@ event_dispatch: | |||
291 | /* "Nested control path" -- if the previous mode was kernel */ | 291 | /* "Nested control path" -- if the previous mode was kernel */ |
292 | { | 292 | { |
293 | R0 = memw(R29 + #_PT_ER_VMEST); | 293 | R0 = memw(R29 + #_PT_ER_VMEST); |
294 | R16.L = #LO(do_work_pending); | 294 | R26.L = #LO(do_work_pending); |
295 | } | 295 | } |
296 | { | 296 | { |
297 | P0 = tstbit(R0, #HVM_VMEST_UM_SFT); | 297 | P0 = tstbit(R0, #HVM_VMEST_UM_SFT); |
298 | if (!P0.new) jump:nt restore_all; | 298 | if (!P0.new) jump:nt restore_all; |
299 | R16.H = #HI(do_work_pending); | 299 | R26.H = #HI(do_work_pending); |
300 | R0 = #VM_INT_DISABLE; | 300 | R0 = #VM_INT_DISABLE; |
301 | } | 301 | } |
302 | 302 | ||
@@ -304,7 +304,7 @@ event_dispatch: | |||
304 | * Check also the return from fork/system call, normally coming back from | 304 | * Check also the return from fork/system call, normally coming back from |
305 | * user mode | 305 | * user mode |
306 | * | 306 | * |
307 | * R16 needs to have do_work_pending, and R0 should have VM_INT_DISABLE | 307 | * R26 needs to have do_work_pending, and R0 should have VM_INT_DISABLE |
308 | */ | 308 | */ |
309 | 309 | ||
310 | check_work_pending: | 310 | check_work_pending: |
@@ -313,7 +313,7 @@ check_work_pending: | |||
313 | { | 313 | { |
314 | R0 = R29; /* regs should still be at top of stack */ | 314 | R0 = R29; /* regs should still be at top of stack */ |
315 | R1 = memw(THREADINFO_REG + #_THREAD_INFO_FLAGS); | 315 | R1 = memw(THREADINFO_REG + #_THREAD_INFO_FLAGS); |
316 | callr R16; | 316 | callr R26; |
317 | } | 317 | } |
318 | 318 | ||
319 | { | 319 | { |
@@ -375,11 +375,11 @@ _K_enter_debug: | |||
375 | ret_from_fork: | 375 | ret_from_fork: |
376 | { | 376 | { |
377 | call schedule_tail | 377 | call schedule_tail |
378 | R16.H = #HI(do_work_pending); | 378 | R26.H = #HI(do_work_pending); |
379 | } | 379 | } |
380 | { | 380 | { |
381 | P0 = cmp.eq(R24, #0); | 381 | P0 = cmp.eq(R24, #0); |
382 | R16.L = #LO(do_work_pending); | 382 | R26.L = #LO(do_work_pending); |
383 | R0 = #VM_INT_DISABLE; | 383 | R0 = #VM_INT_DISABLE; |
384 | } | 384 | } |
385 | if P0 jump check_work_pending | 385 | if P0 jump check_work_pending |