blob: c1dbcf4c57759a99ff27e67f86b2b42177897b01 [file] [log] [blame]
/* Copyright (C) 2008-2023 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "windows-nat.h"
#include "x86-nat.h"
#include "amd64-tdep.h"
#include <windows.h>
#define context_offset(x) (offsetof (CONTEXT, x))
const int amd64_mappings[]
= { context_offset (Rax), context_offset (Rbx), context_offset (Rcx),
context_offset (Rdx), context_offset (Rsi), context_offset (Rdi),
context_offset (Rbp), context_offset (Rsp), context_offset (R8),
context_offset (R9), context_offset (R10), context_offset (R11),
context_offset (R12), context_offset (R13), context_offset (R14),
context_offset (R15), context_offset (Rip), context_offset (EFlags),
context_offset (SegCs), context_offset (SegSs), context_offset (SegDs),
context_offset (SegEs), context_offset (SegFs), context_offset (SegGs),
context_offset (FloatSave.FloatRegisters[0]),
context_offset (FloatSave.FloatRegisters[1]),
context_offset (FloatSave.FloatRegisters[2]),
context_offset (FloatSave.FloatRegisters[3]),
context_offset (FloatSave.FloatRegisters[4]),
context_offset (FloatSave.FloatRegisters[5]),
context_offset (FloatSave.FloatRegisters[6]),
context_offset (FloatSave.FloatRegisters[7]),
context_offset (FloatSave.ControlWord),
context_offset (FloatSave.StatusWord),
context_offset (FloatSave.TagWord),
context_offset (FloatSave.ErrorSelector),
context_offset (FloatSave.ErrorOffset),
context_offset (FloatSave.DataSelector),
context_offset (FloatSave.DataOffset),
context_offset (FloatSave.ErrorSelector)
/* XMM0-7 */,
context_offset (Xmm0), context_offset (Xmm1), context_offset (Xmm2),
context_offset (Xmm3), context_offset (Xmm4), context_offset (Xmm5),
context_offset (Xmm6), context_offset (Xmm7), context_offset (Xmm8),
context_offset (Xmm9), context_offset (Xmm10), context_offset (Xmm11),
context_offset (Xmm12), context_offset (Xmm13), context_offset (Xmm14),
context_offset (Xmm15),
/* MXCSR */
context_offset (FloatSave.MxCsr) };
#undef context_offset
/* segment_register_p_ftype implementation for amd64. */
int
amd64_windows_segment_register_p (int regnum)
{
return regnum >= AMD64_CS_REGNUM && regnum <= AMD64_GS_REGNUM;
}
void _initialize_amd64_windows_nat ();
void
_initialize_amd64_windows_nat ()
{
x86_set_debug_register_length (8);
}