1/* Native-dependent code for NetBSD/amd64. 2 3 Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. 4 5 This file is part of GDB. 6 7 This program is free software; you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 19 20#include "defs.h" 21#include "target.h" 22 23#include "gdb_assert.h" 24 25#include "amd64-tdep.h" 26#include "amd64-nat.h" 27 28/* Mapping between the general-purpose registers in NetBSD/amd64 29 `struct reg' format and GDB's register cache layout for 30 NetBSD/i386. 31 32 Note that most (if not all) NetBSD/amd64 registers are 64-bit, 33 while the NetBSD/i386 registers are all 32-bit, but since we're 34 little-endian we get away with that. */ 35 36/* From <machine/reg.h>. */ 37static int amd64nbsd32_r_reg_offset[] = 38{ 39 14 * 8, /* %eax */ 40 3 * 8, /* %ecx */ 41 2 * 8, /* %edx */ 42 13 * 8, /* %ebx */ 43 24 * 8, /* %esp */ 44 12 * 8, /* %ebp */ 45 1 * 8, /* %esi */ 46 0 * 8, /* %edi */ 47 21 * 8, /* %eip */ 48 23 * 8, /* %eflags */ 49 22 * 8, /* %cs */ 50 25 * 8, /* %ss */ 51 18 * 8, /* %ds */ 52 17 * 8, /* %es */ 53 16 * 8, /* %fs */ 54 15 * 8 /* %gs */ 55}; 56 57 58/* Provide a prototype to silence -Wmissing-prototypes. */ 59void _initialize_amd64nbsd_nat (void); 60 61void 62_initialize_amd64nbsd_nat (void) 63{ 64 amd64_native_gregset32_reg_offset = amd64nbsd32_r_reg_offset; 65 amd64_native_gregset32_num_regs = ARRAY_SIZE (amd64nbsd32_r_reg_offset); 66 amd64_native_gregset64_reg_offset = amd64nbsd_r_reg_offset; 67 68 /* We've got nothing to add to the common *BSD/amd64 target. */ 69 add_target (amd64bsd_target ()); 70} 71