• S
    ftrace, ia64: IA64 dynamic ftrace support · a14a07b8
    Shaohua Li 提交于
    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: NShaohua Li <shaohua.li@intel.com>
    Signed-off-by: NSteven Rostedt <srostedt@redhat.com>
    Signed-off-by: NIngo Molnar <mingo@elte.hu>
    a14a07b8
ftrace.c 5.5 KB