Blame unwind_x86_64.h

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