1 /* Native-dependent code for NetBSD/amd64. 2 3 Copyright 2003, 2004 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 2 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, write to the Free Software 19 Foundation, Inc., 59 Temple Place - Suite 330, 20 Boston, MA 02111-1307, USA. */ 21 22 #include "defs.h" 23 #include "target.h" 24 25 #include "gdb_assert.h" 26 27 #include "amd64-tdep.h" 28 #include "amd64-nat.h" 29 30 /* Mapping between the general-purpose registers in NetBSD/amd64 31 `struct reg' format and GDB's register cache layout for 32 NetBSD/i386. 33 34 Note that most (if not all) NetBSD/amd64 registers are 64-bit, 35 while the NetBSD/i386 registers are all 32-bit, but since we're 36 little-endian we get away with that. */ 37 38 /* From <machine/reg.h>. */ 39 static int amd64nbsd32_r_reg_offset[] = 40 { 41 14 * 8, /* %eax */ 42 3 * 8, /* %ecx */ 43 2 * 8, /* %edx */ 44 13 * 8, /* %ebx */ 45 24 * 8, /* %esp */ 46 12 * 8, /* %ebp */ 47 1 * 8, /* %esi */ 48 0 * 8, /* %edi */ 49 21 * 8, /* %eip */ 50 23 * 8, /* %eflags */ 51 22 * 8, /* %cs */ 52 25 * 8, /* %ss */ 53 18 * 8, /* %ds */ 54 17 * 8, /* %es */ 55 16 * 8, /* %fs */ 56 15 * 8 /* %gs */ 57 }; 58 59 60 /* Provide a prototype to silence -Wmissing-prototypes. */ 61 void _initialize_amd64nbsd_nat (void); 62 63 void 64 _initialize_amd64nbsd_nat (void) 65 { 66 amd64_native_gregset32_reg_offset = amd64nbsd32_r_reg_offset; 67 amd64_native_gregset32_num_regs = ARRAY_SIZE (amd64nbsd32_r_reg_offset); 68 amd64_native_gregset64_reg_offset = amd64nbsd_r_reg_offset; 69 70 /* We've got nothing to add to the common *BSD/amd64 target. */ 71 add_target (amd64bsd_target ()); 72 } 73