Index: gdb/i386-tdep.h |
diff --git a/gdb/i386-tdep.h b/gdb/i386-tdep.h |
index 5f233f590fe61a85f15e0a8ff14af19d88d80be5..6529c98b58887d8e0c36beb9981cf772d91d69ae 100644 |
--- a/gdb/i386-tdep.h |
+++ b/gdb/i386-tdep.h |
@@ -1,6 +1,6 @@ |
/* Target-dependent code for the i386. |
- Copyright (C) 2001-2004, 2006-2012 Free Software Foundation, Inc. |
+ Copyright (C) 2001-2013 Free Software Foundation, Inc. |
This file is part of GDB. |
@@ -52,20 +52,6 @@ enum struct_return |
reg_struct_return /* Return "short" structures in registers. */ |
}; |
-/* Register classes as defined in the AMD x86-64 psABI. */ |
- |
-enum amd64_reg_class |
-{ |
- AMD64_INTEGER, |
- AMD64_SSE, |
- AMD64_SSEUP, |
- AMD64_X87, |
- AMD64_X87UP, |
- AMD64_COMPLEX_X87, |
- AMD64_NO_CLASS, |
- AMD64_MEMORY |
-}; |
- |
/* i386 architecture specific information. */ |
struct gdbarch_tdep |
{ |
@@ -75,35 +61,6 @@ struct gdbarch_tdep |
int gregset_num_regs; |
size_t sizeof_gregset; |
- /* The general-purpose registers used to pass integers when making |
- function calls. This only applies to amd64, as all parameters |
- are passed through the stack on x86. */ |
- int call_dummy_num_integer_regs; |
- int *call_dummy_integer_regs; |
- |
- /* Used on amd64 only. Classify TYPE according to calling conventions, |
- and store the result in CLASS. */ |
- void (*classify) (struct type *type, enum amd64_reg_class class[2]); |
- |
- /* Used on amd64 only. Non-zero if the first few MEMORY arguments |
- should be passed by pointer. |
- |
- More precisely, MEMORY arguments are passed through the stack. |
- But certain architectures require that their address be passed |
- by register as well, if there are still some integer registers |
- available for argument passing. */ |
- int memory_args_by_pointer; |
- |
- /* Used on amd64 only. |
- |
- If non-zero, then the callers of a function are expected to reserve |
- some space in the stack just before the area where the PC is saved |
- so that the callee may save the integer-parameter registers there. |
- The amount of space is dependent on the list of registers used for |
- integer parameter passing (see component call_dummy_num_integer_regs |
- above). */ |
- int integer_param_regs_saved_in_caller_frame; |
- |
/* Floating-point registers. */ |
struct regset *fpregset; |
size_t sizeof_fpregset; |
@@ -173,6 +130,21 @@ struct gdbarch_tdep |
/* Upper YMM register names. Only used for tdesc_numbered_register. */ |
const char **ymmh_register_names; |
+ /* Register number for %bnd0r. Set this to -1 to indicate the absence |
+ bound registers. */ |
+ int bnd0r_regnum; |
+ |
+ /* Register number for pseudo register %bnd0. Set this to -1 to indicate the absence |
+ bound registers. */ |
+ int bnd0_regnum; |
+ |
+ /* Register number for %bndcfgu. Set this to -1 to indicate the absence |
+ bound control registers. */ |
+ int bndcfgu_regnum; |
+ |
+ /* MPX register names. Only used for tdesc_numbered_register. */ |
+ const char **mpx_register_names; |
+ |
/* Target description. */ |
const struct target_desc *tdesc; |
@@ -208,6 +180,7 @@ struct gdbarch_tdep |
struct type *i386_mmx_type; |
struct type *i386_ymm_type; |
struct type *i387_ext_type; |
+ struct type *i386_bnd_type; |
/* Process record/replay target. */ |
/* The map for registers because the AMD64's registers order |
@@ -255,7 +228,11 @@ enum i386_regnum |
I386_ST0_REGNUM, /* %st(0) */ |
I386_MXCSR_REGNUM = 40, /* %mxcsr */ |
I386_YMM0H_REGNUM, /* %ymm0h */ |
- I386_YMM7H_REGNUM = I386_YMM0H_REGNUM + 7 |
+ I386_YMM7H_REGNUM = I386_YMM0H_REGNUM + 7, |
+ I386_BND0R_REGNUM, |
+ I386_BND3R_REGNUM = I386_BND0R_REGNUM + 3, |
+ I386_BNDCFGU_REGNUM, |
+ I386_BNDSTATUS_REGNUM |
}; |
/* Register numbers of RECORD_REGMAP. */ |
@@ -293,6 +270,7 @@ enum record_i386_regnum |
#define I386_SSE_NUM_REGS (I386_MXCSR_REGNUM + 1) |
#define I386_AVX_NUM_REGS (I386_YMM7H_REGNUM + 1) |
+#define I386_MPX_NUM_REGS (I386_BNDSTATUS_REGNUM + 1) |
/* Size of the largest register. */ |
#define I386_MAX_REGISTER_SIZE 16 |
@@ -306,6 +284,7 @@ extern int i386_word_regnum_p (struct gdbarch *gdbarch, int regnum); |
extern int i386_dword_regnum_p (struct gdbarch *gdbarch, int regnum); |
extern int i386_xmm_regnum_p (struct gdbarch *gdbarch, int regnum); |
extern int i386_ymm_regnum_p (struct gdbarch *gdbarch, int regnum); |
+extern int i386_bnd_regnum_p (struct gdbarch *gdbarch, int regnum); |
extern const char *i386_pseudo_register_name (struct gdbarch *gdbarch, |
int regnum); |