diff options
Diffstat (limited to 'arch/ia64/kernel/head.S')
| -rw-r--r-- | arch/ia64/kernel/head.S | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S index d3a41d5f8d12..ddeab4e36fd5 100644 --- a/arch/ia64/kernel/head.S +++ b/arch/ia64/kernel/head.S | |||
| @@ -1002,6 +1002,26 @@ GLOBAL_ENTRY(sched_clock) | |||
| 1002 | br.ret.sptk.many rp | 1002 | br.ret.sptk.many rp |
| 1003 | END(sched_clock) | 1003 | END(sched_clock) |
| 1004 | 1004 | ||
| 1005 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
| 1006 | GLOBAL_ENTRY(cycle_to_cputime) | ||
| 1007 | alloc r16=ar.pfs,1,0,0,0 | ||
| 1008 | addl r8=THIS_CPU(cpu_info) + IA64_CPUINFO_NSEC_PER_CYC_OFFSET,r0 | ||
| 1009 | ;; | ||
| 1010 | ldf8 f8=[r8] | ||
| 1011 | ;; | ||
| 1012 | setf.sig f9=r32 | ||
| 1013 | ;; | ||
| 1014 | xmpy.lu f10=f9,f8 // calculate low 64 bits of 128-bit product (4 cyc) | ||
| 1015 | xmpy.hu f11=f9,f8 // calculate high 64 bits of 128-bit product | ||
| 1016 | ;; | ||
| 1017 | getf.sig r8=f10 // (5 cyc) | ||
| 1018 | getf.sig r9=f11 | ||
| 1019 | ;; | ||
| 1020 | shrp r8=r9,r8,IA64_NSEC_PER_CYC_SHIFT | ||
| 1021 | br.ret.sptk.many rp | ||
| 1022 | END(cycle_to_cputime) | ||
| 1023 | #endif /* CONFIG_VIRT_CPU_ACCOUNTING */ | ||
| 1024 | |||
| 1005 | GLOBAL_ENTRY(start_kernel_thread) | 1025 | GLOBAL_ENTRY(start_kernel_thread) |
| 1006 | .prologue | 1026 | .prologue |
| 1007 | .save rp, r0 // this is the end of the call-chain | 1027 | .save rp, r0 // this is the end of the call-chain |
