• Guo Ren's avatar
    csky/ftrace: Add dynamic function tracer (include graph tracer) · 28bb030f
    Guo Ren authored
    Support dynamic ftrace including dynamic graph tracer. Gcc-csky with -pg
    will produce call site in every function prologue and we can use these
    call site to hook trace function.
    
    gcc with -pg origin call site:
    	push	lr
    	jbsr	_mcount
    	nop32
    	nop32
    
    If the (callee - caller)'s offset is in range of bsr instruction, we'll
    modify code with:
    	push	lr
    	bsr	_mcount
    	nop32
    	nop32
    Else if the (callee - caller)'s offset is out of bsr instrunction, we'll
    modify code with:
    	push	lr
    	movih	r26, ...
    	ori	r26, ...
    	jsr	r26
    
    (r26 is reserved for jsr link reg in csky abiv2 spec.)
    Signed-off-by: default avatarGuo Ren <ren_guo@c-sky.com>
    28bb030f
ftrace.c 4.35 KB