diff options
Diffstat (limited to 'arch/ia64/kernel/entry.S')
| -rw-r--r-- | arch/ia64/kernel/entry.S | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/arch/ia64/kernel/entry.S b/arch/ia64/kernel/entry.S index 3c8821024509..ba0b6a1f429f 100644 --- a/arch/ia64/kernel/entry.S +++ b/arch/ia64/kernel/entry.S | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | #include <asm/cache.h> | 37 | #include <asm/cache.h> |
| 38 | #include <asm/errno.h> | 38 | #include <asm/errno.h> |
| 39 | #include <asm/kregs.h> | 39 | #include <asm/kregs.h> |
| 40 | #include <asm/offsets.h> | 40 | #include <asm/asm-offsets.h> |
| 41 | #include <asm/pgtable.h> | 41 | #include <asm/pgtable.h> |
| 42 | #include <asm/percpu.h> | 42 | #include <asm/percpu.h> |
| 43 | #include <asm/processor.h> | 43 | #include <asm/processor.h> |
| @@ -470,6 +470,29 @@ ENTRY(load_switch_stack) | |||
| 470 | br.cond.sptk.many b7 | 470 | br.cond.sptk.many b7 |
| 471 | END(load_switch_stack) | 471 | END(load_switch_stack) |
| 472 | 472 | ||
| 473 | GLOBAL_ENTRY(prefetch_stack) | ||
| 474 | add r14 = -IA64_SWITCH_STACK_SIZE, sp | ||
| 475 | add r15 = IA64_TASK_THREAD_KSP_OFFSET, in0 | ||
| 476 | ;; | ||
| 477 | ld8 r16 = [r15] // load next's stack pointer | ||
| 478 | lfetch.fault.excl [r14], 128 | ||
| 479 | ;; | ||
| 480 | lfetch.fault.excl [r14], 128 | ||
| 481 | lfetch.fault [r16], 128 | ||
| 482 | ;; | ||
| 483 | lfetch.fault.excl [r14], 128 | ||
| 484 | lfetch.fault [r16], 128 | ||
| 485 | ;; | ||
| 486 | lfetch.fault.excl [r14], 128 | ||
| 487 | lfetch.fault [r16], 128 | ||
| 488 | ;; | ||
| 489 | lfetch.fault.excl [r14], 128 | ||
| 490 | lfetch.fault [r16], 128 | ||
| 491 | ;; | ||
| 492 | lfetch.fault [r16], 128 | ||
| 493 | br.ret.sptk.many rp | ||
| 494 | END(prefetch_switch_stack) | ||
| 495 | |||
| 473 | GLOBAL_ENTRY(execve) | 496 | GLOBAL_ENTRY(execve) |
| 474 | mov r15=__NR_execve // put syscall number in place | 497 | mov r15=__NR_execve // put syscall number in place |
| 475 | break __BREAK_SYSCALL | 498 | break __BREAK_SYSCALL |
