diff options
author | Mark Kettenis <kettenis@gnu.org> | 2006-01-18 21:26:47 +0000 |
---|---|---|
committer | Mark Kettenis <kettenis@gnu.org> | 2006-01-18 21:26:47 +0000 |
commit | 5ae96ec1ab678eb70cf2d37b4c62b4f509718f1e (patch) | |
tree | fc2b44c073a7811103a62ab26f0f54b2d31c5f46 /gdb/amd64-tdep.c | |
parent | 4f2aea11c7b01ee007960f6546b58846df591535 (diff) | |
download | gdb-5ae96ec1ab678eb70cf2d37b4c62b4f509718f1e.zip gdb-5ae96ec1ab678eb70cf2d37b4c62b4f509718f1e.tar.gz gdb-5ae96ec1ab678eb70cf2d37b4c62b4f509718f1e.tar.bz2 |
* amd64-tdep.c (amd64_sse_type): Remove.
(amd64_register_info): Use i386_eflags_type and i386_sse_type
where appropriate.
(AMD64_NUM_REGS): Use ARRAY_SIZE.
(amd64_register_type): Remove code to build amd_sse_type.
* i386-tdep.c (i386_eflag_type): New variable.
(i386_mmx_type, i386_sse_type): Make global.
(i386_init_types): New function.
(i386_build_mmx_type, i386_build_sse_type): Remove functions.
(i386_register_type): Return i386_eflag_type, i386_sse_type and
i386_mmx_type when appropriate.
(_initialize_i386_tdep): Call i386_init_types.
* i386-tdep.h (i386_eflags_type, i386_mmx_type, i386_sse_type):
Declare extern.
Based on a previous patch form Michal Ludvig:
Diffstat (limited to 'gdb/amd64-tdep.c')
-rw-r--r-- | gdb/amd64-tdep.c | 71 |
1 files changed, 23 insertions, 48 deletions
diff --git a/gdb/amd64-tdep.c b/gdb/amd64-tdep.c index d3fb9c0..1bea297 100644 --- a/gdb/amd64-tdep.c +++ b/gdb/amd64-tdep.c @@ -1,7 +1,9 @@ /* Target-dependent code for AMD64. - Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, - Inc. Contributed by Jiri Smid, SuSE Labs. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -55,8 +57,6 @@ struct amd64_register_info struct type **type; }; -static struct type *amd64_sse_type; - static struct amd64_register_info const amd64_register_info[] = { { "rax", &builtin_type_int64 }, @@ -78,7 +78,7 @@ static struct amd64_register_info const amd64_register_info[] = { "r14", &builtin_type_int64 }, { "r15", &builtin_type_int64 }, { "rip", &builtin_type_void_func_ptr }, - { "eflags", &builtin_type_int32 }, + { "eflags", &i386_eflags_type }, { "cs", &builtin_type_int32 }, { "ss", &builtin_type_int32 }, { "ds", &builtin_type_int32 }, @@ -105,28 +105,27 @@ static struct amd64_register_info const amd64_register_info[] = { "fop", &builtin_type_int32 }, /* %xmm0 is register number 40. */ - { "xmm0", &amd64_sse_type }, - { "xmm1", &amd64_sse_type }, - { "xmm2", &amd64_sse_type }, - { "xmm3", &amd64_sse_type }, - { "xmm4", &amd64_sse_type }, - { "xmm5", &amd64_sse_type }, - { "xmm6", &amd64_sse_type }, - { "xmm7", &amd64_sse_type }, - { "xmm8", &amd64_sse_type }, - { "xmm9", &amd64_sse_type }, - { "xmm10", &amd64_sse_type }, - { "xmm11", &amd64_sse_type }, - { "xmm12", &amd64_sse_type }, - { "xmm13", &amd64_sse_type }, - { "xmm14", &amd64_sse_type }, - { "xmm15", &amd64_sse_type }, + { "xmm0", &i386_sse_type }, + { "xmm1", &i386_sse_type }, + { "xmm2", &i386_sse_type }, + { "xmm3", &i386_sse_type }, + { "xmm4", &i386_sse_type }, + { "xmm5", &i386_sse_type }, + { "xmm6", &i386_sse_type }, + { "xmm7", &i386_sse_type }, + { "xmm8", &i386_sse_type }, + { "xmm9", &i386_sse_type }, + { "xmm10", &i386_sse_type }, + { "xmm11", &i386_sse_type }, + { "xmm12", &i386_sse_type }, + { "xmm13", &i386_sse_type }, + { "xmm14", &i386_sse_type }, + { "xmm15", &i386_sse_type }, { "mxcsr", &builtin_type_int32 } }; /* Total number of registers. */ -#define AMD64_NUM_REGS \ - (sizeof (amd64_register_info) / sizeof (amd64_register_info[0])) +#define AMD64_NUM_REGS ARRAY_SIZE (amd64_register_info) /* Return the name of register REGNUM. */ @@ -145,33 +144,9 @@ amd64_register_name (int regnum) static struct type * amd64_register_type (struct gdbarch *gdbarch, int regnum) { - struct type *t; - gdb_assert (regnum >= 0 && regnum < AMD64_NUM_REGS); - /* ??? Unfortunately, amd64_init_abi is called too early, and so we - cannot create the amd64_sse_type early enough to avoid any check - at this point. */ - t = *amd64_register_info[regnum].type; - if (t != NULL) - return t; - - gdb_assert (amd64_sse_type == NULL); - - t = init_composite_type ("__gdb_builtin_type_vec128i", TYPE_CODE_UNION); - append_composite_type_field (t, "v4_float", builtin_type_v4_float); - append_composite_type_field (t, "v2_double", builtin_type_v2_double); - append_composite_type_field (t, "v16_int8", builtin_type_v16_int8); - append_composite_type_field (t, "v8_int16", builtin_type_v8_int16); - append_composite_type_field (t, "v4_int32", builtin_type_v4_int32); - append_composite_type_field (t, "v2_int64", builtin_type_v2_int64); - append_composite_type_field (t, "uint128", builtin_type_int128); - - TYPE_FLAGS (t) |= TYPE_FLAG_VECTOR; - TYPE_NAME (t) = "builtin_type_vec128i"; - - amd64_sse_type = t; - return t; + return *amd64_register_info[regnum].type; } /* DWARF Register Number Mapping as defined in the System V psABI, |