[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 1/6] lib: Add a generic implementation of current_text_addr()
Remove the unused x86 implementation. Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> --- Changes in v2: * Include Clang in the comment. xen/common/lib.c | 12 ++++++++++++ xen/include/asm-x86/processor.h | 10 ---------- xen/include/xen/lib.h | 2 ++ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/xen/common/lib.c b/xen/common/lib.c index 6233020..7674d3a 100644 --- a/xen/common/lib.c +++ b/xen/common/lib.c @@ -501,6 +501,18 @@ void __init init_constructors(void) } /* + * The GCC and Clang docs state that the function must be marked noinline to + * have the expected result. From the GCC docs: + * "When inlining the expected behavior is that the function returns the + * address of the function that is returned to. To work around this behavior + * use the noinline function attribute." + */ +noinline void *current_text_addr(void) +{ + return __builtin_return_address(0); +} + +/* * Local variables: * mode: C * c-file-style: "BSD" diff --git a/xen/include/asm-x86/processor.h b/xen/include/asm-x86/processor.h index dda8b83..f9de357 100644 --- a/xen/include/asm-x86/processor.h +++ b/xen/include/asm-x86/processor.h @@ -98,16 +98,6 @@ struct domain; struct vcpu; -/* - * Default implementation of macro that returns current - * instruction pointer ("program counter"). - */ -#define current_text_addr() ({ \ - void *pc; \ - asm ( "leaq 1f(%%rip),%0\n1:" : "=r" (pc) ); \ - pc; \ -}) - struct x86_cpu_id { uint16_t vendor; uint16_t family; diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index 995a85a..6b4f1e4 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -162,6 +162,8 @@ extern void add_taint(unsigned int taint); struct cpu_user_regs; void dump_execstate(struct cpu_user_regs *); +void *current_text_addr(void); + void init_constructors(void); void *bsearch(const void *key, const void *base, size_t num, size_t size, -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |