From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26316 invoked by alias); 22 Aug 2006 20:58:10 -0000 Received: (qmail 26305 invoked by uid 22791); 22 Aug 2006 20:58:09 -0000 X-Spam-Check-By: sourceware.org Received: from sibelius.xs4all.nl (HELO sibelius.xs4all.nl) (82.92.89.47) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 22 Aug 2006 20:58:06 +0000 Received: from elgar.sibelius.xs4all.nl (root@elgar.sibelius.xs4all.nl [192.168.0.2]) by sibelius.xs4all.nl (8.13.4/8.13.4) with ESMTP id k7MKw3S7016621 for ; Tue, 22 Aug 2006 22:58:03 +0200 (CEST) Received: from elgar.sibelius.xs4all.nl (kettenis@localhost.sibelius.xs4all.nl [127.0.0.1]) by elgar.sibelius.xs4all.nl (8.13.6/8.13.6) with ESMTP id k7MKw2iW005578 for ; Tue, 22 Aug 2006 22:58:02 +0200 (CEST) Received: (from kettenis@localhost) by elgar.sibelius.xs4all.nl (8.13.6/8.13.6/Submit) id k7MKw2WC010566; Tue, 22 Aug 2006 22:58:02 +0200 (CEST) Date: Tue, 22 Aug 2006 21:24:00 -0000 Message-Id: <200608222058.k7MKw2WC010566@elgar.sibelius.xs4all.nl> From: Mark Kettenis To: gdb-patches@sourceware.org Subject: [commit] Add support for printing register flags on UltraSPARC Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2006-08/txt/msg00172.txt.bz2 Pretty straightforward. Bit #6 and #7 of %pstate should really be printed as a 2-bit field with values TSO, PSO and RMO, but there is no support code for that yet. Committed, Mark Index: ChangeLog from Mark Kettenis * sparc64-tdep.c (sparc64_pstate_type, sparc64_fsr_type) (sparc64_fprs_type): New variables. (sparc64_init_types): New function.: (sparc64_register_info): Use appropriate flag types for %fsr and %fprs. (sparc64_pseudo_register_info): Use appropriate type for %pstate. (_initialize_sparc64_tdep): New function. Index: sparc64-tdep.c =================================================================== RCS file: /cvs/src/src/gdb/sparc64-tdep.c,v retrieving revision 1.26 diff -u -p -r1.26 sparc64-tdep.c --- sparc64-tdep.c 5 Apr 2006 20:01:19 -0000 1.26 +++ sparc64-tdep.c 22 Aug 2006 20:55:47 -0000 @@ -1,6 +1,6 @@ /* Target-dependent code for UltraSPARC. - Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This file is part of GDB. @@ -120,6 +120,62 @@ sparc64_structure_or_union_p (const stru return 0; } + + +/* Type for %pstate. */ +struct type *sparc64_pstate_type; + +/* Type for %fsr. */ +struct type *sparc64_fsr_type; + +/* Type for %fprs. */ +struct type *sparc64_fprs_type; + +/* Construct types for ISA-specific registers. */ + +static void +sparc64_init_types (void) +{ + struct type *type; + + type = init_flags_type ("builtin_type_sparc64_pstate", 8); + append_flags_type_flag (type, 0, "AG"); + append_flags_type_flag (type, 1, "IE"); + append_flags_type_flag (type, 2, "PRIV"); + append_flags_type_flag (type, 3, "AM"); + append_flags_type_flag (type, 4, "PEF"); + append_flags_type_flag (type, 5, "RED"); + append_flags_type_flag (type, 8, "TLE"); + append_flags_type_flag (type, 9, "CLE"); + append_flags_type_flag (type, 10, "PID0"); + append_flags_type_flag (type, 11, "PID1"); + sparc64_pstate_type = type; + + type = init_flags_type ("builtin_type_sparc64_fsr", 8); + append_flags_type_flag (type, 0, "NXA"); + append_flags_type_flag (type, 1, "DZA"); + append_flags_type_flag (type, 2, "UFA"); + append_flags_type_flag (type, 3, "OFA"); + append_flags_type_flag (type, 4, "NVA"); + append_flags_type_flag (type, 5, "NXC"); + append_flags_type_flag (type, 6, "DZC"); + append_flags_type_flag (type, 7, "UFC"); + append_flags_type_flag (type, 8, "OFC"); + append_flags_type_flag (type, 9, "NVC"); + append_flags_type_flag (type, 22, "NS"); + append_flags_type_flag (type, 23, "NXM"); + append_flags_type_flag (type, 24, "DZM"); + append_flags_type_flag (type, 25, "UFM"); + append_flags_type_flag (type, 26, "OFM"); + append_flags_type_flag (type, 27, "NVM"); + sparc64_fsr_type = type; + + type = init_flags_type ("builtin_type_sparc64_fprs", 8); + append_flags_type_flag (type, 0, "DL"); + append_flags_type_flag (type, 1, "DU"); + append_flags_type_flag (type, 2, "FEF"); + sparc64_fprs_type = type; +} /* Register information. */ @@ -224,8 +280,8 @@ static struct sparc64_register_info spar /* FIXME: Give it a name until we start using register groups. */ { "state", &builtin_type_int64 }, - { "fsr", &builtin_type_int64 }, - { "fprs", &builtin_type_int64 }, + { "fsr", &sparc64_fsr_type }, + { "fprs", &sparc64_fprs_type }, /* "Although Y is a 64-bit register, its high-order 32 bits are reserved and always read as 0." */ @@ -241,7 +297,7 @@ static struct sparc64_register_info spar static struct sparc64_register_info sparc64_pseudo_register_info[] = { { "cwp", &builtin_type_int64 }, - { "pstate", &builtin_type_int64 }, + { "pstate", &sparc64_pstate_type }, { "asi", &builtin_type_int64 }, { "ccr", &builtin_type_int64 }, @@ -1479,3 +1535,14 @@ sparc64_collect_fpregset (const struct r regs + (32 * 4) + (16 * 8)); } } + + +/* Provide a prototype to silence -Wmissing-prototypes. */ +void _initialize_sparc64_tdep (void); + +void +_initialize_sparc64_tdep (void) +{ + /* Initialize the UltraSPARC-specific register types. */ + sparc64_init_types(); +}