Skip to content

Commit

Permalink
ftrace/s390: mcount offset calculation
Browse files Browse the repository at this point in the history
Do the mcount offset adjustment in the recordmcount.pl/recordmcount.[ch]
at compile time and not in ftrace_call_adjust at run time.

Signed-off-by: Martin Schwidefsky <[email protected]>
Signed-off-by: Steven Rostedt <[email protected]>
  • Loading branch information
Martin Schwidefsky authored and rostedt committed May 16, 2011
1 parent 521ccb5 commit f296388
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 5 deletions.
4 changes: 1 addition & 3 deletions arch/s390/include/asm/ftrace.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,13 @@ struct dyn_arch_ftrace { };

#ifdef CONFIG_64BIT
#define MCOUNT_INSN_SIZE 12
#define MCOUNT_OFFSET 8
#else
#define MCOUNT_INSN_SIZE 20
#define MCOUNT_OFFSET 4
#endif

static inline unsigned long ftrace_call_adjust(unsigned long addr)
{
return addr - MCOUNT_OFFSET;
return addr;
}

#endif /* __ASSEMBLY__ */
Expand Down
8 changes: 6 additions & 2 deletions scripts/recordmcount.c
Original file line number Diff line number Diff line change
Expand Up @@ -368,8 +368,10 @@ do_file(char const *const fname)
"unrecognized ET_REL file: %s\n", fname);
fail_file();
}
if (w2(ehdr->e_machine) == EM_S390)
if (w2(ehdr->e_machine) == EM_S390) {
reltype = R_390_32;
mcount_adjust_32 = -4;
}
if (w2(ehdr->e_machine) == EM_MIPS) {
reltype = R_MIPS_32;
is_fake_mcount32 = MIPS32_is_fake_mcount;
Expand All @@ -384,8 +386,10 @@ do_file(char const *const fname)
"unrecognized ET_REL file: %s\n", fname);
fail_file();
}
if (w2(ghdr->e_machine) == EM_S390)
if (w2(ghdr->e_machine) == EM_S390) {
reltype = R_390_64;
mcount_adjust_64 = -8;
}
if (w2(ghdr->e_machine) == EM_MIPS) {
reltype = R_MIPS_64;
Elf64_r_sym = MIPS64_r_sym;
Expand Down
2 changes: 2 additions & 0 deletions scripts/recordmcount.pl
Original file line number Diff line number Diff line change
Expand Up @@ -243,12 +243,14 @@ sub check_objcopy

} elsif ($arch eq "s390" && $bits == 32) {
$mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_32\\s+_mcount\$";
$mcount_adjust = -4;
$alignment = 4;
$ld .= " -m elf_s390";
$cc .= " -m31";

} elsif ($arch eq "s390" && $bits == 64) {
$mcount_regex = "^\\s*([0-9a-fA-F]+):\\s*R_390_(PC|PLT)32DBL\\s+_mcount\\+0x2\$";
$mcount_adjust = -8;
$alignment = 8;
$type = ".quad";
$ld .= " -m elf64_s390";
Expand Down

0 comments on commit f296388

Please sign in to comment.