1/** 2 * \file 3 * \brief Header for x86-specific GDB stub code. 4 */ 5 6/* 7 * Copyright (c) 2007, 2008, ETH Zurich. 8 * All rights reserved. 9 * 10 * This file is distributed under the terms in the attached LICENSE file. 11 * If you do not find this file, copies can be found by writing to: 12 * ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group. 13 */ 14 15#include <x86.h> 16 17/** 18 * \brief X86_64 register set 19 * 20 * As defined by GDB. 21 */ 22enum gdb_x86_64_register_nums { 23 GDB_X86_64_RAX_REG, GDB_X86_64_RBX_REG, GDB_X86_64_RCX_REG, GDB_X86_64_RDX_REG, 24 GDB_X86_64_RSI_REG, GDB_X86_64_RDI_REG, GDB_X86_64_RBP_REG, GDB_X86_64_RSP_REG, 25 GDB_X86_64_R8_REG, GDB_X86_64_R9_REG, GDB_X86_64_R10_REG, GDB_X86_64_R11_REG, 26 GDB_X86_64_R12_REG, GDB_X86_64_R13_REG, GDB_X86_64_R14_REG, GDB_X86_64_R15_REG, 27 GDB_X86_64_RIP_REG, GDB_X86_64_EFLAGS_REG, GDB_X86_64_CS_REG, GDB_X86_64_SS_REG, 28 29/* these are not saved/used in 64-bit mode, and currently avoided 30 DS_REG, ES_REG, FS_REG, GS_REG, 31*/ 32 33/* these are not used yet: 34 ST0_REG, ST1_REG, ST2_REG, ST3_REG, ST4_REG, ST5_REG, ST6_REG, ST7_REG, 35 36 FCTRL_REG, FSTAT_REG, FTAG_REG, FISEG_REG, 37 FIOFF_REG, FOSEG_REG, FOOFF_REG, FOP_REG, 38 39 XMM0_REG, XMM1_REG, XMM2_REG, XMM3_REG, XMM4_REG, XMM5_REG, 40 XMM6_REG, XMM7_REG, XMM8_REG, XMM9_REG, XMM10_REG, XMM11_REG, 41 XMM12_REG, XMM13_REG, XMM14_REG, XMM15_REG, 42 MXCSR_REG 43*/ 44 45 GDB_X86_64_NUM_REGS /* not a real register; must be last! */ 46}; 47 48extern uintptr_t *gdb_arch_registers; 49 50/** Address of saved registers as void * */ 51#define GDB_ARCH_REGADDR ((void*)gdb_arch_registers) 52 53/** Number of bytes saved in GDB frame */ 54#define GDB_ARCH_REGBYTES (sizeof(uintptr_t) * GDB_X86_64_NUM_REGS) 55