1
linux/arch/ia64/kernel
Shaohua Li a14a07b801 ftrace, ia64: IA64 dynamic ftrace support
IA64 dynamic ftrace support.
The original _mcount stub for each function is like:
	alloc r40=ar.pfs,12,8,0
	mov r43=r0;;
	mov r42=b0
	mov r41=r1
	nop.i 0x0
	br.call.sptk.many b0 = _mcount;;

The patch convert it to below for nop:
	[MII] nop.m 0x0
	mov r3=ip
	nop.i 0x0
	[MLX] nop.m 0x0
	nop.x 0x0;;
This isn't completely nop, as there is one instuction 'mov r3=ip', but
it should be light and harmless for code follow it.

And below is for call
	[MII] nop.m 0x0
	mov r3=ip
	nop.i 0x0
	[MLX] nop.m 0x0
	brl.many .;;
In this way, only one instruction is changed to convert code between nop
and call. This should meet dyn-ftrace's requirement.
But this requires CPU support brl instruction, so dyn-ftrace isn't
supported for old Itanium system. Assume there are quite few such old
system running.

Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-14 12:11:31 +01:00
..
cpufreq [IA64] improper printk format in acpi-cpufreq 2008-07-17 11:11:17 -07:00
.gitignore [IA64] Cleanup generated file not ignored by .gitignore 2008-08-04 11:06:16 -07:00
acpi-ext.c
acpi-processor.c
acpi.c Merge branch 'linus' into release 2009-01-09 03:39:43 -05:00
asm-offsets.c ia64/pv_ops/xen: elf note based xen startup. 2008-10-17 10:02:21 -07:00
audit.c
brl_emu.c
crash_dump.c kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
crash.c
cyclone.c
efi_stub.S
efi.c always reserve elfcore header memory in crash kernel 2008-10-20 08:52:40 -07:00
entry.h
entry.S ftrace, ia64: IA64 dynamic ftrace support 2009-01-14 12:11:31 +01:00
err_inject.c sysdev: Pass the attribute to the low level sysdev show/store function 2008-07-21 21:55:02 -07:00
esi_stub.S
esi.c
fsys.S
fsyscall_gtod_data.h
ftrace.c ftrace, ia64: IA64 dynamic ftrace support 2009-01-14 12:11:31 +01:00
gate-data.S
gate.lds.S
gate.S
head.S [IA64] Rationalize kernel mode alignment checking 2008-11-20 13:27:12 -08:00
ia64_ksyms.c ftrace, ia64: IA64 static ftrace support 2009-01-14 12:11:26 +01:00
init_task.c take init_fs to saner place 2008-12-31 18:07:42 -05:00
iosapic.c cpumask: IA64: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask 2008-12-26 22:23:40 +10:30
irq_ia64.c [IA64] pvops: add hooks, pv_irq_ops, to paravirtualized irq related operations. 2008-05-27 15:11:10 -07:00
irq_lsapic.c
irq.c ia64: cpumask fix for is_affinity_mask_valid() 2009-01-04 15:39:24 +01:00
ivt.S ia64/pv_ops: fix paravirtualization of ivt.S with CONFIG_SMP=n 2008-10-17 09:50:09 -07:00
jprobes.S [IA64] Move include/asm-ia64 to arch/ia64/include/asm 2008-08-01 10:21:21 -07:00
kprobes.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-01-07 11:31:52 -08:00
machine_kexec.c
machvec.c
Makefile ftrace, ia64: IA64 dynamic ftrace support 2009-01-14 12:11:31 +01:00
mca_asm.S
mca_drv_asm.S
mca_drv.c CRED: Wrap task credential accesses in the IA64 arch 2008-11-14 10:38:37 +11:00
mca_drv.h
mca.c [IA64] use mprintk instead of printk, in ia64_mca_modify_original_stack 2008-11-20 13:31:10 -08:00
minstate.h [IA64] pvops: paravirtualize minstate.h. 2008-05-27 15:02:17 -07:00
module.c [IA64] fix compile failure with non modular builds 2008-09-10 10:46:32 -07:00
msi_ia64.c cpumask: make irq_set_affinity() take a const struct cpumask 2008-12-13 21:20:26 +10:30
nr-irqs.c ia64/pv_ops/xen: define the nubmer of irqs which xen needs. 2008-10-17 10:06:59 -07:00
numa.c
pal.S
palinfo.c smp_call_function: get rid of the unused nonatomic/retry argument 2008-06-26 11:24:35 +02:00
paravirt_inst.h ia64/pv_ops: paravirtualized instruction checker. 2008-10-17 10:12:54 -07:00
paravirt.c [IA64] ia64/pv_ops/pv_cpu_ops: fix _IA64_REG_IP case. 2008-11-20 13:41:20 -08:00
paravirtentry.S [IA64] pvops: paravirtualize entry.S 2008-05-27 15:08:01 -07:00
patch.c [IA64] Workaround for RSE issue 2008-05-27 13:24:39 -07:00
pci-dma.c IA64: struct device - replace bus_id with dev_name(), dev_set_name() 2009-01-06 10:44:40 -08:00
pci-swiotlb.c [IA64] Add Variable Page Size and IA64 Support in Intel IOMMU 2008-10-17 12:14:13 -07:00
perfmon_default_smpl.c
perfmon_generic.h
perfmon_itanium.h
perfmon_mckinley.h
perfmon_montecito.h
perfmon.c CRED: Use RCU to access another task's creds and to release a task's own creds 2008-11-14 10:39:19 +11:00
process.c Pull pv_ops-xen into release branch 2008-10-17 13:51:28 -07:00
ptrace.c [IA64] utrace use generic trace hook 2008-10-06 10:43:06 -07:00
relocate_kernel.S
sal.c [IA64] Update check_sal_cache_flush to use platform_send_ipi() 2008-06-11 16:40:33 -07:00
salinfo.c
setup.c [IA64] Reserve elfcorehdr memory in CONFIG_CRASH_DUMP 2008-11-07 09:51:55 -08:00
sigframe.h
signal.c CRED: Wrap task credential accesses in the IA64 arch 2008-11-14 10:38:37 +11:00
smp.c [IA64] Shrink shadow_flush_counts to a short array to save 8k of per_cpu area. 2008-08-18 15:39:48 -07:00
smpboot.c cpumask: make irq_set_affinity() take a const struct cpumask 2008-12-13 21:20:26 +10:30
sys_ia64.c flag parameters: pipe 2008-07-24 10:47:28 -07:00
time.c [PATCH] idle cputime accounting 2008-12-31 15:11:46 +01:00
topology.c cpumask: change cpumask_scnprintf, cpumask_parse_user, cpulist_parse, and cpulist_scnprintf to take pointers. 2008-12-13 21:20:25 +10:30
traps.c
unaligned.c
uncached.c smp_call_function: get rid of the unused nonatomic/retry argument 2008-06-26 11:24:35 +02:00
unwind_decoder.c
unwind_i.h
unwind.c
vmlinux.lds.S [IA64] Put the space for cpu0 per-cpu area into .data section 2008-09-29 16:39:19 -07:00