Blame unwind_x86_64.h

Packit bf408e
/*
Packit bf408e
 * This program is free software; you can redistribute it and/or modify
Packit bf408e
 * it under the terms of the GNU General Public License as published by
Packit bf408e
 * the Free Software Foundation; either version 2 of the License, or
Packit bf408e
 * (at your option) any later version.
Packit bf408e
 *
Packit bf408e
 * This program is distributed in the hope that it will be useful,
Packit bf408e
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit bf408e
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit bf408e
 * GNU General Public License for more details.
Packit bf408e
 */
Packit bf408e
Packit bf408e
#define CONFIG_64BIT 1
Packit bf408e
#define NULL ((void *)0)
Packit bf408e
Packit bf408e
typedef unsigned long size_t;
Packit bf408e
typedef unsigned char u8;
Packit bf408e
typedef signed short s16;
Packit bf408e
typedef unsigned short u16;
Packit bf408e
typedef signed int s32;
Packit bf408e
typedef unsigned int u32;
Packit bf408e
typedef unsigned long long u64;
Packit bf408e
Packit bf408e
struct pt_regs {
Packit bf408e
        unsigned long r15;
Packit bf408e
        unsigned long r14;
Packit bf408e
        unsigned long r13;
Packit bf408e
        unsigned long r12;
Packit bf408e
        unsigned long rbp;
Packit bf408e
        unsigned long rbx;
Packit bf408e
/* arguments: non interrupts/non tracing syscalls only save upto here*/
Packit bf408e
        unsigned long r11;
Packit bf408e
        unsigned long r10;
Packit bf408e
        unsigned long r9;
Packit bf408e
        unsigned long r8;
Packit bf408e
        unsigned long rax;
Packit bf408e
        unsigned long rcx;
Packit bf408e
        unsigned long rdx;
Packit bf408e
        unsigned long rsi;
Packit bf408e
        unsigned long rdi;
Packit bf408e
        unsigned long orig_rax;
Packit bf408e
/* end of arguments */
Packit bf408e
/* cpu exception frame or undefined */
Packit bf408e
        unsigned long rip;
Packit bf408e
        unsigned long cs;
Packit bf408e
        unsigned long eflags;
Packit bf408e
        unsigned long rsp;
Packit bf408e
        unsigned long ss;
Packit bf408e
/* top of stack page */
Packit bf408e
};
Packit bf408e
Packit bf408e
struct unwind_frame_info
Packit bf408e
{
Packit bf408e
        struct pt_regs regs;
Packit bf408e
};
Packit bf408e
Packit bf408e
extern int unwind(struct unwind_frame_info *, int);
Packit bf408e
extern void init_unwind_table(void);
Packit bf408e
extern void free_unwind_table(void);
Packit bf408e
Packit bf408e
#ifndef offsetof
Packit bf408e
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
Packit bf408e
#endif
Packit bf408e
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
Packit bf408e
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
Packit bf408e
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
Packit bf408e
#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f))
Packit bf408e
#define get_unaligned(ptr) (*(ptr))
Packit bf408e
//#define __get_user(x,ptr)  __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
Packit bf408e
#define THREAD_ORDER 1
Packit bf408e
#define THREAD_SIZE  (PAGE_SIZE << THREAD_ORDER)
Packit bf408e
Packit bf408e
#define UNW_PC(frame)        (frame)->regs.rip
Packit bf408e
#define UNW_SP(frame)        (frame)->regs.rsp
Packit bf408e
#ifdef CONFIG_FRAME_POINTER
Packit bf408e
	#define UNW_FP(frame)        (frame)->regs.rbp
Packit bf408e
	#define FRAME_RETADDR_OFFSET 8
Packit bf408e
	#define FRAME_LINK_OFFSET    0
Packit bf408e
	#define STACK_BOTTOM(tsk)    (((tsk)->thread.rsp0 - 1) & ~(THREAD_SIZE - 1))
Packit bf408e
	#define STACK_TOP(tsk)       ((tsk)->thread.rsp0)
Packit bf408e
#endif
Packit bf408e
Packit bf408e
Packit bf408e
#define EXTRA_INFO(f) { BUILD_BUG_ON_ZERO(offsetof(struct unwind_frame_info, f) % FIELD_SIZEOF(struct unwind_frame_info, f)) + offsetof(struct unwind_frame_info, f)/ FIELD_SIZEOF(struct unwind_frame_info, f), FIELD_SIZEOF(struct unwind_frame_info, f) }
Packit bf408e
Packit bf408e
#define PTREGS_INFO(f) EXTRA_INFO(regs.f)
Packit bf408e
Packit bf408e
#define UNW_REGISTER_INFO \
Packit bf408e
	PTREGS_INFO(rax),\
Packit bf408e
	PTREGS_INFO(rdx),\
Packit bf408e
	PTREGS_INFO(rcx),\
Packit bf408e
	PTREGS_INFO(rbx), \
Packit bf408e
	PTREGS_INFO(rsi), \
Packit bf408e
	PTREGS_INFO(rdi), \
Packit bf408e
	PTREGS_INFO(rbp), \
Packit bf408e
	PTREGS_INFO(rsp), \
Packit bf408e
	PTREGS_INFO(r8), \
Packit bf408e
	PTREGS_INFO(r9), \
Packit bf408e
	PTREGS_INFO(r10),\
Packit bf408e
	PTREGS_INFO(r11), \
Packit bf408e
	PTREGS_INFO(r12), \
Packit bf408e
	PTREGS_INFO(r13), \
Packit bf408e
	PTREGS_INFO(r14), \
Packit bf408e
	PTREGS_INFO(r15), \
Packit bf408e
	PTREGS_INFO(rip)
Packit bf408e