OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [gdb/] [tui/] [tuiRegs.c] - Diff between revs 107 and 1765

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 107 Rev 1765
 
 
/*
/*
   ** tuiRegs.c
   ** tuiRegs.c
   **         This module contains functions to support display of registers
   **         This module contains functions to support display of registers
   **         in the data window.
   **         in the data window.
 */
 */
 
 
 
 
#include "defs.h"
#include "defs.h"
#include "tui.h"
#include "tui.h"
#include "tuiData.h"
#include "tuiData.h"
#include "symtab.h"
#include "symtab.h"
#include "gdbtypes.h"
#include "gdbtypes.h"
#include "gdbcmd.h"
#include "gdbcmd.h"
#include "frame.h"
#include "frame.h"
#include "inferior.h"
#include "inferior.h"
#include "target.h"
#include "target.h"
#include "tuiLayout.h"
#include "tuiLayout.h"
#include "tuiWin.h"
#include "tuiWin.h"
 
 
 
 
/*****************************************
/*****************************************
** LOCAL DEFINITIONS                    **
** LOCAL DEFINITIONS                    **
******************************************/
******************************************/
#define DOUBLE_FLOAT_LABEL_WIDTH    6
#define DOUBLE_FLOAT_LABEL_WIDTH    6
#define DOUBLE_FLOAT_LABEL_FMT      "%6.6s: "
#define DOUBLE_FLOAT_LABEL_FMT      "%6.6s: "
#define DOUBLE_FLOAT_VALUE_WIDTH    30  /*min of 16 but may be in sci notation */
#define DOUBLE_FLOAT_VALUE_WIDTH    30  /*min of 16 but may be in sci notation */
 
 
#define SINGLE_FLOAT_LABEL_WIDTH    6
#define SINGLE_FLOAT_LABEL_WIDTH    6
#define SINGLE_FLOAT_LABEL_FMT      "%6.6s: "
#define SINGLE_FLOAT_LABEL_FMT      "%6.6s: "
#define SINGLE_FLOAT_VALUE_WIDTH    25  /* min of 8 but may be in sci notation */
#define SINGLE_FLOAT_VALUE_WIDTH    25  /* min of 8 but may be in sci notation */
 
 
#define SINGLE_LABEL_WIDTH    10
#define SINGLE_LABEL_WIDTH    10
#define SINGLE_LABEL_FMT      "%10.10s: "
#define SINGLE_LABEL_FMT      "%10.10s: "
#define SINGLE_VALUE_WIDTH    14        /* minimum of 8 but may be in sci notation */
#define SINGLE_VALUE_WIDTH    14        /* minimum of 8 but may be in sci notation */
 
 
/* In the code HP gave Cygnus, this was actually a function call to a
/* In the code HP gave Cygnus, this was actually a function call to a
   PA-specific function, which was supposed to determine whether the
   PA-specific function, which was supposed to determine whether the
   target was a 64-bit or 32-bit processor.  However, the 64-bit
   target was a 64-bit or 32-bit processor.  However, the 64-bit
   support wasn't complete, so we didn't merge that in, so we leave
   support wasn't complete, so we didn't merge that in, so we leave
   this here as a stub.  */
   this here as a stub.  */
#define IS_64BIT 0
#define IS_64BIT 0
 
 
/*****************************************
/*****************************************
** STATIC DATA                          **
** STATIC DATA                          **
******************************************/
******************************************/
 
 
 
 
/*****************************************
/*****************************************
** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
** STATIC LOCAL FUNCTIONS FORWARD DECLS    **
******************************************/
******************************************/
static TuiStatus _tuiSetRegsContent
static TuiStatus _tuiSetRegsContent
  PARAMS ((int, int, struct frame_info *,
  PARAMS ((int, int, struct frame_info *,
           TuiRegisterDisplayType, int));
           TuiRegisterDisplayType, int));
static char *_tuiRegisterName PARAMS ((int));
static char *_tuiRegisterName PARAMS ((int));
static TuiStatus _tuiGetRegisterRawValue
static TuiStatus _tuiGetRegisterRawValue
  PARAMS ((int, char *, struct frame_info *));
  PARAMS ((int, char *, struct frame_info *));
static void _tuiSetRegisterElement
static void _tuiSetRegisterElement
  PARAMS ((int, struct frame_info *,
  PARAMS ((int, struct frame_info *,
           TuiDataElementPtr, int));
           TuiDataElementPtr, int));
static void _tuiDisplayRegister
static void _tuiDisplayRegister
  PARAMS ((int, TuiGenWinInfoPtr, enum precision_type));
  PARAMS ((int, TuiGenWinInfoPtr, enum precision_type));
static void _tuiRegisterFormat
static void _tuiRegisterFormat
  PARAMS ((char *, int, int, TuiDataElementPtr,
  PARAMS ((char *, int, int, TuiDataElementPtr,
           enum precision_type));
           enum precision_type));
static TuiStatus _tuiSetGeneralRegsContent PARAMS ((int));
static TuiStatus _tuiSetGeneralRegsContent PARAMS ((int));
static TuiStatus _tuiSetSpecialRegsContent PARAMS ((int));
static TuiStatus _tuiSetSpecialRegsContent PARAMS ((int));
static TuiStatus _tuiSetGeneralAndSpecialRegsContent PARAMS ((int));
static TuiStatus _tuiSetGeneralAndSpecialRegsContent PARAMS ((int));
static TuiStatus _tuiSetFloatRegsContent PARAMS ((TuiRegisterDisplayType, int));
static TuiStatus _tuiSetFloatRegsContent PARAMS ((TuiRegisterDisplayType, int));
static int _tuiRegValueHasChanged
static int _tuiRegValueHasChanged
  PARAMS ((TuiDataElementPtr, struct frame_info *,
  PARAMS ((TuiDataElementPtr, struct frame_info *,
           char *));
           char *));
static void _tuiShowFloat_command PARAMS ((char *, int));
static void _tuiShowFloat_command PARAMS ((char *, int));
static void _tuiShowGeneral_command PARAMS ((char *, int));
static void _tuiShowGeneral_command PARAMS ((char *, int));
static void _tuiShowSpecial_command PARAMS ((char *, int));
static void _tuiShowSpecial_command PARAMS ((char *, int));
static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
static void _tuiToggleFloatRegs_command PARAMS ((char *, int));
static void _tuiToggleFloatRegs_command PARAMS ((char *, int));
static void _tuiScrollRegsForward_command PARAMS ((char *, int));
static void _tuiScrollRegsForward_command PARAMS ((char *, int));
static void _tuiScrollRegsBackward_command PARAMS ((char *, int));
static void _tuiScrollRegsBackward_command PARAMS ((char *, int));
static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
static void _tui_vShowRegisters_commandSupport PARAMS ((va_list));
 
 
 
 
 
 
/*****************************************
/*****************************************
** PUBLIC FUNCTIONS                     **
** PUBLIC FUNCTIONS                     **
******************************************/
******************************************/
 
 
/*
/*
   ** tuiLastRegsLineNo()
   ** tuiLastRegsLineNo()
   **        Answer the number of the last line in the regs display.
   **        Answer the number of the last line in the regs display.
   **        If there are no registers (-1) is returned.
   **        If there are no registers (-1) is returned.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiLastRegsLineNo (void)
tuiLastRegsLineNo (void)
#else
#else
tuiLastRegsLineNo ()
tuiLastRegsLineNo ()
#endif
#endif
{
{
  register int numLines = (-1);
  register int numLines = (-1);
 
 
  if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
  if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
    {
    {
      numLines = (dataWin->detail.dataDisplayInfo.regsContentCount /
      numLines = (dataWin->detail.dataDisplayInfo.regsContentCount /
                  dataWin->detail.dataDisplayInfo.regsColumnCount);
                  dataWin->detail.dataDisplayInfo.regsColumnCount);
      if (dataWin->detail.dataDisplayInfo.regsContentCount %
      if (dataWin->detail.dataDisplayInfo.regsContentCount %
          dataWin->detail.dataDisplayInfo.regsColumnCount)
          dataWin->detail.dataDisplayInfo.regsColumnCount)
        numLines++;
        numLines++;
    }
    }
  return numLines;
  return numLines;
}                               /* tuiLastRegsLineNo */
}                               /* tuiLastRegsLineNo */
 
 
 
 
/*
/*
   ** tuiLineFromRegElementNo()
   ** tuiLineFromRegElementNo()
   **        Answer the line number that the register element at elementNo is
   **        Answer the line number that the register element at elementNo is
   **        on.  If elementNo is greater than the number of register elements
   **        on.  If elementNo is greater than the number of register elements
   **        there are, -1 is returned.
   **        there are, -1 is returned.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiLineFromRegElementNo (
tuiLineFromRegElementNo (
                          int elementNo)
                          int elementNo)
#else
#else
tuiLineFromRegElementNo (elementNo)
tuiLineFromRegElementNo (elementNo)
     int elementNo;
     int elementNo;
#endif
#endif
{
{
  if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
  if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
    {
    {
      int i, line = (-1);
      int i, line = (-1);
 
 
      i = 1;
      i = 1;
      while (line == (-1))
      while (line == (-1))
        {
        {
          if (elementNo <
          if (elementNo <
              (dataWin->detail.dataDisplayInfo.regsColumnCount * i))
              (dataWin->detail.dataDisplayInfo.regsColumnCount * i))
            line = i - 1;
            line = i - 1;
          else
          else
            i++;
            i++;
        }
        }
 
 
      return line;
      return line;
    }
    }
  else
  else
    return (-1);
    return (-1);
}                               /* tuiLineFromRegElementNo */
}                               /* tuiLineFromRegElementNo */
 
 
 
 
/*
/*
   ** tuiFirstRegElementNoInLine()
   ** tuiFirstRegElementNoInLine()
   **        Answer the index of the first element in lineNo.  If lineNo is
   **        Answer the index of the first element in lineNo.  If lineNo is
   **        past the register area (-1) is returned.
   **        past the register area (-1) is returned.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiFirstRegElementNoInLine (
tuiFirstRegElementNoInLine (
                             int lineNo)
                             int lineNo)
#else
#else
tuiFirstRegElementNoInLine (lineNo)
tuiFirstRegElementNoInLine (lineNo)
     int lineNo;
     int lineNo;
#endif
#endif
{
{
  if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount)
  if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount)
      <= dataWin->detail.dataDisplayInfo.regsContentCount)
      <= dataWin->detail.dataDisplayInfo.regsContentCount)
    return ((lineNo + 1) *
    return ((lineNo + 1) *
            dataWin->detail.dataDisplayInfo.regsColumnCount) -
            dataWin->detail.dataDisplayInfo.regsColumnCount) -
      dataWin->detail.dataDisplayInfo.regsColumnCount;
      dataWin->detail.dataDisplayInfo.regsColumnCount;
  else
  else
    return (-1);
    return (-1);
}                               /* tuiFirstRegElementNoInLine */
}                               /* tuiFirstRegElementNoInLine */
 
 
 
 
/*
/*
   ** tuiLastRegElementNoInLine()
   ** tuiLastRegElementNoInLine()
   **        Answer the index of the last element in lineNo.  If lineNo is past
   **        Answer the index of the last element in lineNo.  If lineNo is past
   **        the register area (-1) is returned.
   **        the register area (-1) is returned.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiLastRegElementNoInLine (
tuiLastRegElementNoInLine (
                            int lineNo)
                            int lineNo)
#else
#else
tuiLastRegElementNoInLine (lineNo)
tuiLastRegElementNoInLine (lineNo)
     int lineNo;
     int lineNo;
#endif
#endif
{
{
  if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount) <=
  if ((lineNo * dataWin->detail.dataDisplayInfo.regsColumnCount) <=
      dataWin->detail.dataDisplayInfo.regsContentCount)
      dataWin->detail.dataDisplayInfo.regsContentCount)
    return ((lineNo + 1) *
    return ((lineNo + 1) *
            dataWin->detail.dataDisplayInfo.regsColumnCount) - 1;
            dataWin->detail.dataDisplayInfo.regsColumnCount) - 1;
  else
  else
    return (-1);
    return (-1);
}                               /* tuiLastRegElementNoInLine */
}                               /* tuiLastRegElementNoInLine */
 
 
 
 
/*
/*
   ** tuiCalculateRegsColumnCount
   ** tuiCalculateRegsColumnCount
   **        Calculate the number of columns that should be used to display
   **        Calculate the number of columns that should be used to display
   **        the registers.
   **        the registers.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiCalculateRegsColumnCount (
tuiCalculateRegsColumnCount (
                              TuiRegisterDisplayType dpyType)
                              TuiRegisterDisplayType dpyType)
#else
#else
tuiCalculateRegsColumnCount (dpyType)
tuiCalculateRegsColumnCount (dpyType)
     TuiRegisterDisplayType dpyType;
     TuiRegisterDisplayType dpyType;
#endif
#endif
{
{
  int colCount, colWidth;
  int colCount, colWidth;
 
 
  if (IS_64BIT || dpyType == TUI_DFLOAT_REGS)
  if (IS_64BIT || dpyType == TUI_DFLOAT_REGS)
    colWidth = DOUBLE_FLOAT_VALUE_WIDTH + DOUBLE_FLOAT_LABEL_WIDTH;
    colWidth = DOUBLE_FLOAT_VALUE_WIDTH + DOUBLE_FLOAT_LABEL_WIDTH;
  else
  else
    {
    {
      if (dpyType == TUI_SFLOAT_REGS)
      if (dpyType == TUI_SFLOAT_REGS)
        colWidth = SINGLE_FLOAT_VALUE_WIDTH + SINGLE_FLOAT_LABEL_WIDTH;
        colWidth = SINGLE_FLOAT_VALUE_WIDTH + SINGLE_FLOAT_LABEL_WIDTH;
      else
      else
        colWidth = SINGLE_VALUE_WIDTH + SINGLE_LABEL_WIDTH;
        colWidth = SINGLE_VALUE_WIDTH + SINGLE_LABEL_WIDTH;
    }
    }
  colCount = (dataWin->generic.width - 2) / colWidth;
  colCount = (dataWin->generic.width - 2) / colWidth;
 
 
  return colCount;
  return colCount;
}                               /* tuiCalulateRegsColumnCount */
}                               /* tuiCalulateRegsColumnCount */
 
 
 
 
/*
/*
   ** tuiShowRegisters().
   ** tuiShowRegisters().
   **        Show the registers int the data window as indicated by dpyType.
   **        Show the registers int the data window as indicated by dpyType.
   **        If there is any other registers being displayed, then they are
   **        If there is any other registers being displayed, then they are
   **        cleared.  What registers are displayed is dependent upon dpyType.
   **        cleared.  What registers are displayed is dependent upon dpyType.
 */
 */
void
void
#ifdef __STDC__
#ifdef __STDC__
tuiShowRegisters (
tuiShowRegisters (
                   TuiRegisterDisplayType dpyType)
                   TuiRegisterDisplayType dpyType)
#else
#else
tuiShowRegisters (dpyType)
tuiShowRegisters (dpyType)
     TuiRegisterDisplayType dpyType;
     TuiRegisterDisplayType dpyType;
#endif
#endif
{
{
  TuiStatus ret = TUI_FAILURE;
  TuiStatus ret = TUI_FAILURE;
  int refreshValuesOnly = FALSE;
  int refreshValuesOnly = FALSE;
 
 
  /* Say that registers should be displayed, even if there is a problem */
  /* Say that registers should be displayed, even if there is a problem */
  dataWin->detail.dataDisplayInfo.displayRegs = TRUE;
  dataWin->detail.dataDisplayInfo.displayRegs = TRUE;
 
 
  if (target_has_registers)
  if (target_has_registers)
    {
    {
      refreshValuesOnly =
      refreshValuesOnly =
        (dpyType == dataWin->detail.dataDisplayInfo.regsDisplayType);
        (dpyType == dataWin->detail.dataDisplayInfo.regsDisplayType);
      switch (dpyType)
      switch (dpyType)
        {
        {
        case TUI_GENERAL_REGS:
        case TUI_GENERAL_REGS:
          ret = _tuiSetGeneralRegsContent (refreshValuesOnly);
          ret = _tuiSetGeneralRegsContent (refreshValuesOnly);
          break;
          break;
        case TUI_SFLOAT_REGS:
        case TUI_SFLOAT_REGS:
        case TUI_DFLOAT_REGS:
        case TUI_DFLOAT_REGS:
          ret = _tuiSetFloatRegsContent (dpyType, refreshValuesOnly);
          ret = _tuiSetFloatRegsContent (dpyType, refreshValuesOnly);
          break;
          break;
 
 
/* could ifdef out */
/* could ifdef out */
 
 
        case TUI_SPECIAL_REGS:
        case TUI_SPECIAL_REGS:
          ret = _tuiSetSpecialRegsContent (refreshValuesOnly);
          ret = _tuiSetSpecialRegsContent (refreshValuesOnly);
          break;
          break;
        case TUI_GENERAL_AND_SPECIAL_REGS:
        case TUI_GENERAL_AND_SPECIAL_REGS:
          ret = _tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly);
          ret = _tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly);
          break;
          break;
 
 
/* end of potential if def */
/* end of potential if def */
 
 
        default:
        default:
          break;
          break;
        }
        }
    }
    }
  if (ret == TUI_FAILURE)
  if (ret == TUI_FAILURE)
    {
    {
      dataWin->detail.dataDisplayInfo.regsDisplayType = TUI_UNDEFINED_REGS;
      dataWin->detail.dataDisplayInfo.regsDisplayType = TUI_UNDEFINED_REGS;
      tuiEraseDataContent (NO_REGS_STRING);
      tuiEraseDataContent (NO_REGS_STRING);
    }
    }
  else
  else
    {
    {
      int i;
      int i;
 
 
      /* Clear all notation of changed values */
      /* Clear all notation of changed values */
      for (i = 0; (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
      for (i = 0; (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
        {
        {
          TuiGenWinInfoPtr dataItemWin;
          TuiGenWinInfoPtr dataItemWin;
 
 
          dataItemWin = &dataWin->detail.dataDisplayInfo.
          dataItemWin = &dataWin->detail.dataDisplayInfo.
            regsContent[i]->whichElement.dataWindow;
            regsContent[i]->whichElement.dataWindow;
          (&((TuiWinElementPtr)
          (&((TuiWinElementPtr)
             dataItemWin->content[0])->whichElement.data)->highlight = FALSE;
             dataItemWin->content[0])->whichElement.data)->highlight = FALSE;
        }
        }
      dataWin->detail.dataDisplayInfo.regsDisplayType = dpyType;
      dataWin->detail.dataDisplayInfo.regsDisplayType = dpyType;
      tuiDisplayAllData ();
      tuiDisplayAllData ();
    }
    }
  (tuiLayoutDef ())->regsDisplayType = dpyType;
  (tuiLayoutDef ())->regsDisplayType = dpyType;
 
 
  return;
  return;
}                               /* tuiShowRegisters */
}                               /* tuiShowRegisters */
 
 
 
 
/*
/*
   ** tuiDisplayRegistersFrom().
   ** tuiDisplayRegistersFrom().
   **        Function to display the registers in the content from
   **        Function to display the registers in the content from
   **        'startElementNo' until the end of the register content or the
   **        'startElementNo' until the end of the register content or the
   **        end of the display height.  No checking for displaying past
   **        end of the display height.  No checking for displaying past
   **        the end of the registers is done here.
   **        the end of the registers is done here.
 */
 */
void
void
#ifdef __STDC__
#ifdef __STDC__
tuiDisplayRegistersFrom (
tuiDisplayRegistersFrom (
                          int startElementNo)
                          int startElementNo)
#else
#else
tuiDisplayRegistersFrom (startElementNo)
tuiDisplayRegistersFrom (startElementNo)
     int startElementNo;
     int startElementNo;
#endif
#endif
{
{
  if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
  if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
      dataWin->detail.dataDisplayInfo.regsContentCount > 0)
      dataWin->detail.dataDisplayInfo.regsContentCount > 0)
    {
    {
      register int i = startElementNo;
      register int i = startElementNo;
      int j, valueCharsWide, charsWide, itemWinWidth, curY, labelWidth;
      int j, valueCharsWide, charsWide, itemWinWidth, curY, labelWidth;
      enum precision_type precision;
      enum precision_type precision;
 
 
      precision = (dataWin->detail.dataDisplayInfo.regsDisplayType
      precision = (dataWin->detail.dataDisplayInfo.regsDisplayType
                   == TUI_DFLOAT_REGS) ?
                   == TUI_DFLOAT_REGS) ?
        double_precision : unspecified_precision;
        double_precision : unspecified_precision;
      if (IS_64BIT ||
      if (IS_64BIT ||
          dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)
          dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)
        {
        {
          valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH;
          valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH;
          labelWidth = DOUBLE_FLOAT_LABEL_WIDTH;
          labelWidth = DOUBLE_FLOAT_LABEL_WIDTH;
        }
        }
      else
      else
        {
        {
          if (dataWin->detail.dataDisplayInfo.regsDisplayType ==
          if (dataWin->detail.dataDisplayInfo.regsDisplayType ==
              TUI_SFLOAT_REGS)
              TUI_SFLOAT_REGS)
            {
            {
              valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH;
              valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH;
              labelWidth = SINGLE_FLOAT_LABEL_WIDTH;
              labelWidth = SINGLE_FLOAT_LABEL_WIDTH;
            }
            }
          else
          else
            {
            {
              valueCharsWide = SINGLE_VALUE_WIDTH;
              valueCharsWide = SINGLE_VALUE_WIDTH;
              labelWidth = SINGLE_LABEL_WIDTH;
              labelWidth = SINGLE_LABEL_WIDTH;
            }
            }
        }
        }
      itemWinWidth = valueCharsWide + labelWidth;
      itemWinWidth = valueCharsWide + labelWidth;
      /*
      /*
         ** Now create each data "sub" window, and write the display into it.
         ** Now create each data "sub" window, and write the display into it.
       */
       */
      curY = 1;
      curY = 1;
      while (i < dataWin->detail.dataDisplayInfo.regsContentCount &&
      while (i < dataWin->detail.dataDisplayInfo.regsContentCount &&
             curY <= dataWin->generic.viewportHeight)
             curY <= dataWin->generic.viewportHeight)
        {
        {
          for (j = 0;
          for (j = 0;
               (j < dataWin->detail.dataDisplayInfo.regsColumnCount &&
               (j < dataWin->detail.dataDisplayInfo.regsColumnCount &&
                i < dataWin->detail.dataDisplayInfo.regsContentCount); j++)
                i < dataWin->detail.dataDisplayInfo.regsContentCount); j++)
            {
            {
              TuiGenWinInfoPtr dataItemWin;
              TuiGenWinInfoPtr dataItemWin;
              TuiDataElementPtr dataElementPtr;
              TuiDataElementPtr dataElementPtr;
 
 
              /* create the window if necessary */
              /* create the window if necessary */
              dataItemWin = &dataWin->detail.dataDisplayInfo.
              dataItemWin = &dataWin->detail.dataDisplayInfo.
                regsContent[i]->whichElement.dataWindow;
                regsContent[i]->whichElement.dataWindow;
              dataElementPtr = &((TuiWinElementPtr)
              dataElementPtr = &((TuiWinElementPtr)
                                 dataItemWin->content[0])->whichElement.data;
                                 dataItemWin->content[0])->whichElement.data;
              if (dataItemWin->handle == (WINDOW *) NULL)
              if (dataItemWin->handle == (WINDOW *) NULL)
                {
                {
                  dataItemWin->height = 1;
                  dataItemWin->height = 1;
                  dataItemWin->width = (precision == double_precision) ?
                  dataItemWin->width = (precision == double_precision) ?
                    itemWinWidth + 2 : itemWinWidth + 1;
                    itemWinWidth + 2 : itemWinWidth + 1;
                  dataItemWin->origin.x = (itemWinWidth * j) + 1;
                  dataItemWin->origin.x = (itemWinWidth * j) + 1;
                  dataItemWin->origin.y = curY;
                  dataItemWin->origin.y = curY;
                  makeWindow (dataItemWin, DONT_BOX_WINDOW);
                  makeWindow (dataItemWin, DONT_BOX_WINDOW);
                }
                }
              /*
              /*
                 ** Get the printable representation of the register
                 ** Get the printable representation of the register
                 ** and display it
                 ** and display it
               */
               */
              _tuiDisplayRegister (
              _tuiDisplayRegister (
                            dataElementPtr->itemNo, dataItemWin, precision);
                            dataElementPtr->itemNo, dataItemWin, precision);
              i++;              /* next register */
              i++;              /* next register */
            }
            }
          curY++;               /* next row; */
          curY++;               /* next row; */
        }
        }
    }
    }
 
 
  return;
  return;
}                               /* tuiDisplayRegistersFrom */
}                               /* tuiDisplayRegistersFrom */
 
 
 
 
/*
/*
   ** tuiDisplayRegElementAtLine().
   ** tuiDisplayRegElementAtLine().
   **        Function to display the registers in the content from
   **        Function to display the registers in the content from
   **        'startElementNo' on 'startLineNo' until the end of the
   **        'startElementNo' on 'startLineNo' until the end of the
   **        register content or the end of the display height.
   **        register content or the end of the display height.
   **        This function checks that we won't display off the end
   **        This function checks that we won't display off the end
   **        of the register display.
   **        of the register display.
 */
 */
void
void
#ifdef __STDC__
#ifdef __STDC__
tuiDisplayRegElementAtLine (
tuiDisplayRegElementAtLine (
                             int startElementNo,
                             int startElementNo,
                             int startLineNo)
                             int startLineNo)
#else
#else
tuiDisplayRegElementAtLine (startElementNo, startLineNo)
tuiDisplayRegElementAtLine (startElementNo, startLineNo)
     int startElementNo;
     int startElementNo;
     int startLineNo;
     int startLineNo;
#endif
#endif
{
{
  if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
  if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL &&
      dataWin->detail.dataDisplayInfo.regsContentCount > 0)
      dataWin->detail.dataDisplayInfo.regsContentCount > 0)
    {
    {
      register int elementNo = startElementNo;
      register int elementNo = startElementNo;
 
 
      if (startElementNo != 0 && startLineNo != 0)
      if (startElementNo != 0 && startLineNo != 0)
        {
        {
          register int lastLineNo, firstLineOnLastPage;
          register int lastLineNo, firstLineOnLastPage;
 
 
          lastLineNo = tuiLastRegsLineNo ();
          lastLineNo = tuiLastRegsLineNo ();
          firstLineOnLastPage = lastLineNo - (dataWin->generic.height - 2);
          firstLineOnLastPage = lastLineNo - (dataWin->generic.height - 2);
          if (firstLineOnLastPage < 0)
          if (firstLineOnLastPage < 0)
            firstLineOnLastPage = 0;
            firstLineOnLastPage = 0;
          /*
          /*
             ** If there is no other data displayed except registers,
             ** If there is no other data displayed except registers,
             ** and the elementNo causes us to scroll past the end of the
             ** and the elementNo causes us to scroll past the end of the
             ** registers, adjust what element to really start the display at.
             ** registers, adjust what element to really start the display at.
           */
           */
          if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0 &&
          if (dataWin->detail.dataDisplayInfo.dataContentCount <= 0 &&
              startLineNo > firstLineOnLastPage)
              startLineNo > firstLineOnLastPage)
            elementNo = tuiFirstRegElementNoInLine (firstLineOnLastPage);
            elementNo = tuiFirstRegElementNoInLine (firstLineOnLastPage);
        }
        }
      tuiDisplayRegistersFrom (elementNo);
      tuiDisplayRegistersFrom (elementNo);
    }
    }
 
 
  return;
  return;
}                               /* tuiDisplayRegElementAtLine */
}                               /* tuiDisplayRegElementAtLine */
 
 
 
 
 
 
/*
/*
   ** tuiDisplayRegistersFromLine().
   ** tuiDisplayRegistersFromLine().
   **        Function to display the registers starting at line lineNo in
   **        Function to display the registers starting at line lineNo in
   **        the data window.  Answers the line number that the display
   **        the data window.  Answers the line number that the display
   **        actually started from.  If nothing is displayed (-1) is returned.
   **        actually started from.  If nothing is displayed (-1) is returned.
 */
 */
int
int
#ifdef __STDC__
#ifdef __STDC__
tuiDisplayRegistersFromLine (
tuiDisplayRegistersFromLine (
                              int lineNo,
                              int lineNo,
                              int forceDisplay)
                              int forceDisplay)
#else
#else
tuiDisplayRegistersFromLine (lineNo, forceDisplay)
tuiDisplayRegistersFromLine (lineNo, forceDisplay)
     int lineNo;
     int lineNo;
     int forceDisplay;
     int forceDisplay;
#endif
#endif
{
{
  int elementNo;
  int elementNo;
 
 
  if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
  if (dataWin->detail.dataDisplayInfo.regsContentCount > 0)
    {
    {
      int line, elementNo;
      int line, elementNo;
 
 
      if (lineNo < 0)
      if (lineNo < 0)
        line = 0;
        line = 0;
      else if (forceDisplay)
      else if (forceDisplay)
        {                       /*
        {                       /*
                                   ** If we must display regs (forceDisplay is true), then make
                                   ** If we must display regs (forceDisplay is true), then make
                                   ** sure that we don't display off the end of the registers.
                                   ** sure that we don't display off the end of the registers.
                                 */
                                 */
          if (lineNo >= tuiLastRegsLineNo ())
          if (lineNo >= tuiLastRegsLineNo ())
            {
            {
              if ((line = tuiLineFromRegElementNo (
              if ((line = tuiLineFromRegElementNo (
                 dataWin->detail.dataDisplayInfo.regsContentCount - 1)) < 0)
                 dataWin->detail.dataDisplayInfo.regsContentCount - 1)) < 0)
                line = 0;
                line = 0;
            }
            }
          else
          else
            line = lineNo;
            line = lineNo;
        }
        }
      else
      else
        line = lineNo;
        line = lineNo;
 
 
      elementNo = tuiFirstRegElementNoInLine (line);
      elementNo = tuiFirstRegElementNoInLine (line);
      if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
      if (elementNo < dataWin->detail.dataDisplayInfo.regsContentCount)
        tuiDisplayRegElementAtLine (elementNo, line);
        tuiDisplayRegElementAtLine (elementNo, line);
      else
      else
        line = (-1);
        line = (-1);
 
 
      return line;
      return line;
    }
    }
 
 
  return (-1);                  /* nothing was displayed */
  return (-1);                  /* nothing was displayed */
}                               /* tuiDisplayRegistersFromLine */
}                               /* tuiDisplayRegistersFromLine */
 
 
 
 
/*
/*
   ** tuiCheckRegisterValues()
   ** tuiCheckRegisterValues()
   **        This function check all displayed registers for changes in
   **        This function check all displayed registers for changes in
   **        values, given a particular frame.  If the values have changed,
   **        values, given a particular frame.  If the values have changed,
   **        they are updated with the new value and highlighted.
   **        they are updated with the new value and highlighted.
 */
 */
void
void
#ifdef __STDC__
#ifdef __STDC__
tuiCheckRegisterValues (
tuiCheckRegisterValues (
                         struct frame_info *frame)
                         struct frame_info *frame)
#else
#else
tuiCheckRegisterValues (frame)
tuiCheckRegisterValues (frame)
     struct frame_info *frame;
     struct frame_info *frame;
#endif
#endif
{
{
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
    {
    {
      if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0 &&
      if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0 &&
          dataWin->detail.dataDisplayInfo.displayRegs)
          dataWin->detail.dataDisplayInfo.displayRegs)
        tuiShowRegisters ((tuiLayoutDef ())->regsDisplayType);
        tuiShowRegisters ((tuiLayoutDef ())->regsDisplayType);
      else
      else
        {
        {
          int i, j;
          int i, j;
          char rawBuf[MAX_REGISTER_RAW_SIZE];
          char rawBuf[MAX_REGISTER_RAW_SIZE];
 
 
          for (i = 0;
          for (i = 0;
               (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
               (i < dataWin->detail.dataDisplayInfo.regsContentCount); i++)
            {
            {
              TuiDataElementPtr dataElementPtr;
              TuiDataElementPtr dataElementPtr;
              TuiGenWinInfoPtr dataItemWinPtr;
              TuiGenWinInfoPtr dataItemWinPtr;
              int wasHilighted;
              int wasHilighted;
 
 
              dataItemWinPtr = &dataWin->detail.dataDisplayInfo.
              dataItemWinPtr = &dataWin->detail.dataDisplayInfo.
                regsContent[i]->whichElement.dataWindow;
                regsContent[i]->whichElement.dataWindow;
              dataElementPtr = &((TuiWinElementPtr)
              dataElementPtr = &((TuiWinElementPtr)
                             dataItemWinPtr->content[0])->whichElement.data;
                             dataItemWinPtr->content[0])->whichElement.data;
              wasHilighted = dataElementPtr->highlight;
              wasHilighted = dataElementPtr->highlight;
              dataElementPtr->highlight =
              dataElementPtr->highlight =
                _tuiRegValueHasChanged (dataElementPtr, frame, &rawBuf[0]);
                _tuiRegValueHasChanged (dataElementPtr, frame, &rawBuf[0]);
              if (dataElementPtr->highlight)
              if (dataElementPtr->highlight)
                {
                {
                  for (j = 0; j < MAX_REGISTER_RAW_SIZE; j++)
                  for (j = 0; j < MAX_REGISTER_RAW_SIZE; j++)
                    ((char *) dataElementPtr->value)[j] = rawBuf[j];
                    ((char *) dataElementPtr->value)[j] = rawBuf[j];
                  _tuiDisplayRegister (
                  _tuiDisplayRegister (
                                        dataElementPtr->itemNo,
                                        dataElementPtr->itemNo,
                                        dataItemWinPtr,
                                        dataItemWinPtr,
                        ((dataWin->detail.dataDisplayInfo.regsDisplayType ==
                        ((dataWin->detail.dataDisplayInfo.regsDisplayType ==
                          TUI_DFLOAT_REGS) ?
                          TUI_DFLOAT_REGS) ?
                         double_precision : unspecified_precision));
                         double_precision : unspecified_precision));
                }
                }
              else if (wasHilighted)
              else if (wasHilighted)
                {
                {
                  dataElementPtr->highlight = FALSE;
                  dataElementPtr->highlight = FALSE;
                  _tuiDisplayRegister (
                  _tuiDisplayRegister (
                                        dataElementPtr->itemNo,
                                        dataElementPtr->itemNo,
                                        dataItemWinPtr,
                                        dataItemWinPtr,
                        ((dataWin->detail.dataDisplayInfo.regsDisplayType ==
                        ((dataWin->detail.dataDisplayInfo.regsDisplayType ==
                          TUI_DFLOAT_REGS) ?
                          TUI_DFLOAT_REGS) ?
                         double_precision : unspecified_precision));
                         double_precision : unspecified_precision));
                }
                }
            }
            }
        }
        }
    }
    }
  return;
  return;
}                               /* tuiCheckRegisterValues */
}                               /* tuiCheckRegisterValues */
 
 
 
 
/*
/*
   ** tuiToggleFloatRegs().
   ** tuiToggleFloatRegs().
 */
 */
void
void
#ifdef __STDC__
#ifdef __STDC__
tuiToggleFloatRegs (void)
tuiToggleFloatRegs (void)
#else
#else
tuiToggleFloatRegs ()
tuiToggleFloatRegs ()
#endif
#endif
{
{
  TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
  TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
 
 
  if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS)
  if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS)
    layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS;
    layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS;
  else
  else
    layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS;
    layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS;
 
 
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible &&
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible &&
      (dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_SFLOAT_REGS ||
      (dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_SFLOAT_REGS ||
       dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS))
       dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS))
    tuiShowRegisters (layoutDef->floatRegsDisplayType);
    tuiShowRegisters (layoutDef->floatRegsDisplayType);
 
 
  return;
  return;
}                               /* tuiToggleFloatRegs */
}                               /* tuiToggleFloatRegs */
 
 
 
 
void
void
_initialize_tuiRegs ()
_initialize_tuiRegs ()
{
{
  if (tui_version && xdb_commands)
  if (tui_version && xdb_commands)
    {
    {
      add_com ("fr", class_tui, _tuiShowFloat_command,
      add_com ("fr", class_tui, _tuiShowFloat_command,
               "Display only floating point registers\n");
               "Display only floating point registers\n");
      add_com ("gr", class_tui, _tuiShowGeneral_command,
      add_com ("gr", class_tui, _tuiShowGeneral_command,
               "Display only general registers\n");
               "Display only general registers\n");
      add_com ("sr", class_tui, _tuiShowSpecial_command,
      add_com ("sr", class_tui, _tuiShowSpecial_command,
               "Display only special registers\n");
               "Display only special registers\n");
      add_com ("+r", class_tui, _tuiScrollRegsForward_command,
      add_com ("+r", class_tui, _tuiScrollRegsForward_command,
               "Scroll the registers window forward\n");
               "Scroll the registers window forward\n");
      add_com ("-r", class_tui, _tuiScrollRegsBackward_command,
      add_com ("-r", class_tui, _tuiScrollRegsBackward_command,
               "Scroll the register window backward\n");
               "Scroll the register window backward\n");
      add_com ("tf", class_tui, _tuiToggleFloatRegs_command,
      add_com ("tf", class_tui, _tuiToggleFloatRegs_command,
               "Toggle between single and double precision floating point registers.\n");
               "Toggle between single and double precision floating point registers.\n");
      add_cmd (TUI_FLOAT_REGS_NAME_LOWER,
      add_cmd (TUI_FLOAT_REGS_NAME_LOWER,
               class_tui,
               class_tui,
               _tuiToggleFloatRegs_command,
               _tuiToggleFloatRegs_command,
               "Toggle between single and double precision floating point \
               "Toggle between single and double precision floating point \
registers.\n",
registers.\n",
               &togglelist);
               &togglelist);
    }
    }
 
 
  return;
  return;
}                               /* _initialize_tuiRegs */
}                               /* _initialize_tuiRegs */
 
 
 
 
/*****************************************
/*****************************************
** STATIC LOCAL FUNCTIONS                 **
** STATIC LOCAL FUNCTIONS                 **
******************************************/
******************************************/
 
 
 
 
/*
/*
   ** _tuiRegisterName().
   ** _tuiRegisterName().
   **        Return the register name.
   **        Return the register name.
 */
 */
static char *
static char *
#ifdef __STDC__
#ifdef __STDC__
_tuiRegisterName (
_tuiRegisterName (
                   int regNum)
                   int regNum)
#else
#else
_tuiRegisterName (regNum)
_tuiRegisterName (regNum)
     int regNum;
     int regNum;
#endif
#endif
{
{
  if (reg_names[regNum] != (char *) NULL && *(reg_names[regNum]) != (char) 0)
  if (reg_names[regNum] != (char *) NULL && *(reg_names[regNum]) != (char) 0)
    return reg_names[regNum];
    return reg_names[regNum];
  else
  else
    return ((char *) NULL);
    return ((char *) NULL);
}                               /* tuiGetRegisterName */
}                               /* tuiGetRegisterName */
 
 
 
 
/*
/*
   ** _tuiRegisterFormat
   ** _tuiRegisterFormat
   **        Function to format the register name and value into a buffer,
   **        Function to format the register name and value into a buffer,
   **        suitable for printing or display
   **        suitable for printing or display
 */
 */
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiRegisterFormat (
_tuiRegisterFormat (
                     char *buf,
                     char *buf,
                     int bufLen,
                     int bufLen,
                     int regNum,
                     int regNum,
                     TuiDataElementPtr dataElement,
                     TuiDataElementPtr dataElement,
                     enum precision_type precision)
                     enum precision_type precision)
#else
#else
_tuiRegisterFormat (buf, bufLen, regNum, dataElement, precision)
_tuiRegisterFormat (buf, bufLen, regNum, dataElement, precision)
     char *buf;
     char *buf;
     int bufLen;
     int bufLen;
     int regNum;
     int regNum;
     TuiDataElementPtr dataElement;
     TuiDataElementPtr dataElement;
     enum precision_type precision;
     enum precision_type precision;
#endif
#endif
{
{
  char tmpBuf[15];
  char tmpBuf[15];
  char *fmt;
  char *fmt;
  struct ui_file *stream;
  struct ui_file *stream;
 
 
  stream = tui_sfileopen (bufLen);
  stream = tui_sfileopen (bufLen);
  pa_do_strcat_registers_info (regNum, 0, stream, precision);
  pa_do_strcat_registers_info (regNum, 0, stream, precision);
  strcpy (buf, tui_file_get_strbuf (stream));
  strcpy (buf, tui_file_get_strbuf (stream));
  ui_file_delete (stream);
  ui_file_delete (stream);
 
 
  return;
  return;
}                               /* _tuiRegisterFormat */
}                               /* _tuiRegisterFormat */
 
 
 
 
#define NUM_GENERAL_REGS    32
#define NUM_GENERAL_REGS    32
/*
/*
   ** _tuiSetGeneralRegsContent().
   ** _tuiSetGeneralRegsContent().
   **      Set the content of the data window to consist of the general registers.
   **      Set the content of the data window to consist of the general registers.
 */
 */
static TuiStatus
static TuiStatus
#ifdef __STDC__
#ifdef __STDC__
_tuiSetGeneralRegsContent (
_tuiSetGeneralRegsContent (
                            int refreshValuesOnly)
                            int refreshValuesOnly)
#else
#else
_tuiSetGeneralRegsContent (refreshValuesOnly)
_tuiSetGeneralRegsContent (refreshValuesOnly)
     int refreshValuesOnly;
     int refreshValuesOnly;
#endif
#endif
{
{
  return (_tuiSetRegsContent (0,
  return (_tuiSetRegsContent (0,
                              NUM_GENERAL_REGS - 1,
                              NUM_GENERAL_REGS - 1,
                              selected_frame,
                              selected_frame,
                              TUI_GENERAL_REGS,
                              TUI_GENERAL_REGS,
                              refreshValuesOnly));
                              refreshValuesOnly));
 
 
}                               /* _tuiSetGeneralRegsContent */
}                               /* _tuiSetGeneralRegsContent */
 
 
 
 
#define START_SPECIAL_REGS    PCOQ_HEAD_REGNUM
#define START_SPECIAL_REGS    PCOQ_HEAD_REGNUM
/*
/*
   ** _tuiSetSpecialRegsContent().
   ** _tuiSetSpecialRegsContent().
   **      Set the content of the data window to consist of the special registers.
   **      Set the content of the data window to consist of the special registers.
 */
 */
static TuiStatus
static TuiStatus
#ifdef __STDC__
#ifdef __STDC__
_tuiSetSpecialRegsContent (
_tuiSetSpecialRegsContent (
                            int refreshValuesOnly)
                            int refreshValuesOnly)
#else
#else
_tuiSetSpecialRegsContent (refreshValuesOnly)
_tuiSetSpecialRegsContent (refreshValuesOnly)
     int refreshValuesOnly;
     int refreshValuesOnly;
#endif
#endif
{
{
  TuiStatus ret = TUI_FAILURE;
  TuiStatus ret = TUI_FAILURE;
  int i, endRegNum;
  int i, endRegNum;
 
 
  endRegNum = FP0_REGNUM - 1;
  endRegNum = FP0_REGNUM - 1;
#if 0
#if 0
  endRegNum = (-1);
  endRegNum = (-1);
  for (i = START_SPECIAL_REGS; (i < ARCH_NUM_REGS && endRegNum < 0); i++)
  for (i = START_SPECIAL_REGS; (i < ARCH_NUM_REGS && endRegNum < 0); i++)
    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
      endRegNum = i - 1;
      endRegNum = i - 1;
#endif
#endif
  ret = _tuiSetRegsContent (START_SPECIAL_REGS,
  ret = _tuiSetRegsContent (START_SPECIAL_REGS,
                            endRegNum,
                            endRegNum,
                            selected_frame,
                            selected_frame,
                            TUI_SPECIAL_REGS,
                            TUI_SPECIAL_REGS,
                            refreshValuesOnly);
                            refreshValuesOnly);
 
 
  return ret;
  return ret;
}                               /* _tuiSetSpecialRegsContent */
}                               /* _tuiSetSpecialRegsContent */
 
 
 
 
/*
/*
   ** _tuiSetGeneralAndSpecialRegsContent().
   ** _tuiSetGeneralAndSpecialRegsContent().
   **      Set the content of the data window to consist of the special registers.
   **      Set the content of the data window to consist of the special registers.
 */
 */
static TuiStatus
static TuiStatus
#ifdef __STDC__
#ifdef __STDC__
_tuiSetGeneralAndSpecialRegsContent (
_tuiSetGeneralAndSpecialRegsContent (
                                      int refreshValuesOnly)
                                      int refreshValuesOnly)
#else
#else
_tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly)
_tuiSetGeneralAndSpecialRegsContent (refreshValuesOnly)
     int refreshValuesOnly;
     int refreshValuesOnly;
#endif
#endif
{
{
  TuiStatus ret = TUI_FAILURE;
  TuiStatus ret = TUI_FAILURE;
  int i, endRegNum = (-1);
  int i, endRegNum = (-1);
 
 
  endRegNum = FP0_REGNUM - 1;
  endRegNum = FP0_REGNUM - 1;
#if 0
#if 0
  endRegNum = (-1);
  endRegNum = (-1);
  for (i = 0; (i < ARCH_NUM_REGS && endRegNum < 0); i++)
  for (i = 0; (i < ARCH_NUM_REGS && endRegNum < 0); i++)
    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) == TYPE_CODE_FLT)
      endRegNum = i - 1;
      endRegNum = i - 1;
#endif
#endif
  ret = _tuiSetRegsContent (
  ret = _tuiSetRegsContent (
         0, endRegNum, selected_frame, TUI_SPECIAL_REGS, refreshValuesOnly);
         0, endRegNum, selected_frame, TUI_SPECIAL_REGS, refreshValuesOnly);
 
 
  return ret;
  return ret;
}                               /* _tuiSetGeneralAndSpecialRegsContent */
}                               /* _tuiSetGeneralAndSpecialRegsContent */
 
 
/*
/*
   ** _tuiSetFloatRegsContent().
   ** _tuiSetFloatRegsContent().
   **        Set the content of the data window to consist of the float registers.
   **        Set the content of the data window to consist of the float registers.
 */
 */
static TuiStatus
static TuiStatus
#ifdef __STDC__
#ifdef __STDC__
_tuiSetFloatRegsContent (
_tuiSetFloatRegsContent (
                          TuiRegisterDisplayType dpyType,
                          TuiRegisterDisplayType dpyType,
                          int refreshValuesOnly)
                          int refreshValuesOnly)
#else
#else
_tuiSetFloatRegsContent (dpyType, refreshValuesOnly)
_tuiSetFloatRegsContent (dpyType, refreshValuesOnly)
     TuiRegisterDisplayType dpyType;
     TuiRegisterDisplayType dpyType;
     int refreshValuesOnly;
     int refreshValuesOnly;
#endif
#endif
{
{
  TuiStatus ret = TUI_FAILURE;
  TuiStatus ret = TUI_FAILURE;
  int i, startRegNum;
  int i, startRegNum;
 
 
  startRegNum = FP0_REGNUM;
  startRegNum = FP0_REGNUM;
#if 0
#if 0
  startRegNum = (-1);
  startRegNum = (-1);
  for (i = ARCH_NUM_REGS - 1; (i >= 0 && startRegNum < 0); i--)
  for (i = ARCH_NUM_REGS - 1; (i >= 0 && startRegNum < 0); i--)
    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) != TYPE_CODE_FLT)
    if (TYPE_CODE (REGISTER_VIRTUAL_TYPE (i)) != TYPE_CODE_FLT)
      startRegNum = i + 1;
      startRegNum = i + 1;
#endif
#endif
  ret = _tuiSetRegsContent (startRegNum,
  ret = _tuiSetRegsContent (startRegNum,
                            ARCH_NUM_REGS - 1,
                            ARCH_NUM_REGS - 1,
                            selected_frame,
                            selected_frame,
                            dpyType,
                            dpyType,
                            refreshValuesOnly);
                            refreshValuesOnly);
 
 
  return ret;
  return ret;
}                               /* _tuiSetFloatRegsContent */
}                               /* _tuiSetFloatRegsContent */
 
 
 
 
/*
/*
   ** _tuiRegValueHasChanged().
   ** _tuiRegValueHasChanged().
   **        Answer TRUE if the register's value has changed, FALSE otherwise.
   **        Answer TRUE if the register's value has changed, FALSE otherwise.
   **        If TRUE, newValue is filled in with the new value.
   **        If TRUE, newValue is filled in with the new value.
 */
 */
static int
static int
#ifdef __STDC__
#ifdef __STDC__
_tuiRegValueHasChanged (
_tuiRegValueHasChanged (
                         TuiDataElementPtr dataElement,
                         TuiDataElementPtr dataElement,
                         struct frame_info *frame,
                         struct frame_info *frame,
                         char *newValue)
                         char *newValue)
#else
#else
_tuiRegValueHasChanged (dataElement, frame, newValue)
_tuiRegValueHasChanged (dataElement, frame, newValue)
     TuiDataElementPtr dataElement;
     TuiDataElementPtr dataElement;
     struct frame_info *frame;
     struct frame_info *frame;
     char *newValue;
     char *newValue;
#endif
#endif
{
{
  int hasChanged = FALSE;
  int hasChanged = FALSE;
 
 
  if (dataElement->itemNo != UNDEFINED_ITEM &&
  if (dataElement->itemNo != UNDEFINED_ITEM &&
      _tuiRegisterName (dataElement->itemNo) != (char *) NULL)
      _tuiRegisterName (dataElement->itemNo) != (char *) NULL)
    {
    {
      char rawBuf[MAX_REGISTER_RAW_SIZE];
      char rawBuf[MAX_REGISTER_RAW_SIZE];
      int i;
      int i;
 
 
      if (_tuiGetRegisterRawValue (
      if (_tuiGetRegisterRawValue (
                         dataElement->itemNo, rawBuf, frame) == TUI_SUCCESS)
                         dataElement->itemNo, rawBuf, frame) == TUI_SUCCESS)
        {
        {
          for (i = 0; (i < MAX_REGISTER_RAW_SIZE && !hasChanged); i++)
          for (i = 0; (i < MAX_REGISTER_RAW_SIZE && !hasChanged); i++)
            hasChanged = (((char *) dataElement->value)[i] != rawBuf[i]);
            hasChanged = (((char *) dataElement->value)[i] != rawBuf[i]);
          if (hasChanged && newValue != (char *) NULL)
          if (hasChanged && newValue != (char *) NULL)
            {
            {
              for (i = 0; (i < MAX_REGISTER_RAW_SIZE); i++)
              for (i = 0; (i < MAX_REGISTER_RAW_SIZE); i++)
                newValue[i] = rawBuf[i];
                newValue[i] = rawBuf[i];
            }
            }
        }
        }
    }
    }
  return hasChanged;
  return hasChanged;
}                               /* _tuiRegValueHasChanged */
}                               /* _tuiRegValueHasChanged */
 
 
 
 
 
 
/*
/*
   ** _tuiGetRegisterRawValue().
   ** _tuiGetRegisterRawValue().
   **        Get the register raw value.  The raw value is returned in regValue.
   **        Get the register raw value.  The raw value is returned in regValue.
 */
 */
static TuiStatus
static TuiStatus
#ifdef __STDC__
#ifdef __STDC__
_tuiGetRegisterRawValue (
_tuiGetRegisterRawValue (
                          int regNum,
                          int regNum,
                          char *regValue,
                          char *regValue,
                          struct frame_info *frame)
                          struct frame_info *frame)
#else
#else
_tuiGetRegisterRawValue (regNum, regValue, frame)
_tuiGetRegisterRawValue (regNum, regValue, frame)
     int regNum;
     int regNum;
     char *regValue;
     char *regValue;
     struct frame_info *frame;
     struct frame_info *frame;
#endif
#endif
{
{
  TuiStatus ret = TUI_FAILURE;
  TuiStatus ret = TUI_FAILURE;
 
 
  if (target_has_registers)
  if (target_has_registers)
    {
    {
      read_relative_register_raw_bytes_for_frame (regNum, regValue, frame);
      read_relative_register_raw_bytes_for_frame (regNum, regValue, frame);
      ret = TUI_SUCCESS;
      ret = TUI_SUCCESS;
    }
    }
 
 
  return ret;
  return ret;
}                               /* _tuiGetRegisterRawValue */
}                               /* _tuiGetRegisterRawValue */
 
 
 
 
 
 
/*
/*
   ** _tuiSetRegisterElement().
   ** _tuiSetRegisterElement().
   **       Function to initialize a data element with the input and
   **       Function to initialize a data element with the input and
   **       the register value.
   **       the register value.
 */
 */
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiSetRegisterElement (
_tuiSetRegisterElement (
                         int regNum,
                         int regNum,
                         struct frame_info *frame,
                         struct frame_info *frame,
                         TuiDataElementPtr dataElement,
                         TuiDataElementPtr dataElement,
                         int refreshValueOnly)
                         int refreshValueOnly)
#else
#else
_tuiSetRegisterElement (regNum, frame, dataElement, refreshValueOnly)
_tuiSetRegisterElement (regNum, frame, dataElement, refreshValueOnly)
     int regNum;
     int regNum;
     struct frame_info *frame;
     struct frame_info *frame;
     TuiDataElementPtr dataElement;
     TuiDataElementPtr dataElement;
     int refreshValueOnly;
     int refreshValueOnly;
#endif
#endif
{
{
  if (dataElement != (TuiDataElementPtr) NULL)
  if (dataElement != (TuiDataElementPtr) NULL)
    {
    {
      if (!refreshValueOnly)
      if (!refreshValueOnly)
        {
        {
          dataElement->itemNo = regNum;
          dataElement->itemNo = regNum;
          dataElement->name = _tuiRegisterName (regNum);
          dataElement->name = _tuiRegisterName (regNum);
          dataElement->highlight = FALSE;
          dataElement->highlight = FALSE;
        }
        }
      if (dataElement->value == (Opaque) NULL)
      if (dataElement->value == (Opaque) NULL)
        dataElement->value = (Opaque) xmalloc (MAX_REGISTER_RAW_SIZE);
        dataElement->value = (Opaque) xmalloc (MAX_REGISTER_RAW_SIZE);
      if (dataElement->value != (Opaque) NULL)
      if (dataElement->value != (Opaque) NULL)
        _tuiGetRegisterRawValue (regNum, dataElement->value, frame);
        _tuiGetRegisterRawValue (regNum, dataElement->value, frame);
    }
    }
 
 
  return;
  return;
}                               /* _tuiSetRegisterElement */
}                               /* _tuiSetRegisterElement */
 
 
 
 
/*
/*
   ** _tuiSetRegsContent().
   ** _tuiSetRegsContent().
   **        Set the content of the data window to consist of the registers
   **        Set the content of the data window to consist of the registers
   **        numbered from startRegNum to endRegNum.  Note that if
   **        numbered from startRegNum to endRegNum.  Note that if
   **        refreshValuesOnly is TRUE, startRegNum and endRegNum are ignored.
   **        refreshValuesOnly is TRUE, startRegNum and endRegNum are ignored.
 */
 */
static TuiStatus
static TuiStatus
#ifdef __STDC__
#ifdef __STDC__
_tuiSetRegsContent (
_tuiSetRegsContent (
                     int startRegNum,
                     int startRegNum,
                     int endRegNum,
                     int endRegNum,
                     struct frame_info *frame,
                     struct frame_info *frame,
                     TuiRegisterDisplayType dpyType,
                     TuiRegisterDisplayType dpyType,
                     int refreshValuesOnly)
                     int refreshValuesOnly)
#else
#else
_tuiSetRegsContent (startRegNum, endRegNum, frame, dpyType, refreshValuesOnly)
_tuiSetRegsContent (startRegNum, endRegNum, frame, dpyType, refreshValuesOnly)
     int startRegNum;
     int startRegNum;
     int endRegNum;
     int endRegNum;
     struct frame_info *frame;
     struct frame_info *frame;
     TuiRegisterDisplayType dpyType;
     TuiRegisterDisplayType dpyType;
     int refreshValuesOnly;
     int refreshValuesOnly;
#endif
#endif
{
{
  TuiStatus ret = TUI_FAILURE;
  TuiStatus ret = TUI_FAILURE;
  int numRegs = endRegNum - startRegNum + 1;
  int numRegs = endRegNum - startRegNum + 1;
  int allocatedHere = FALSE;
  int allocatedHere = FALSE;
 
 
  if (dataWin->detail.dataDisplayInfo.regsContentCount > 0 &&
  if (dataWin->detail.dataDisplayInfo.regsContentCount > 0 &&
      !refreshValuesOnly)
      !refreshValuesOnly)
    {
    {
      freeDataContent (dataWin->detail.dataDisplayInfo.regsContent,
      freeDataContent (dataWin->detail.dataDisplayInfo.regsContent,
                       dataWin->detail.dataDisplayInfo.regsContentCount);
                       dataWin->detail.dataDisplayInfo.regsContentCount);
      dataWin->detail.dataDisplayInfo.regsContentCount = 0;
      dataWin->detail.dataDisplayInfo.regsContentCount = 0;
    }
    }
  if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0)
  if (dataWin->detail.dataDisplayInfo.regsContentCount <= 0)
    {
    {
      dataWin->detail.dataDisplayInfo.regsContent =
      dataWin->detail.dataDisplayInfo.regsContent =
        allocContent (numRegs, DATA_WIN);
        allocContent (numRegs, DATA_WIN);
      allocatedHere = TRUE;
      allocatedHere = TRUE;
    }
    }
 
 
  if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL)
  if (dataWin->detail.dataDisplayInfo.regsContent != (TuiWinContent) NULL)
    {
    {
      int i;
      int i;
 
 
      if (!refreshValuesOnly || allocatedHere)
      if (!refreshValuesOnly || allocatedHere)
        {
        {
          dataWin->generic.content = (OpaquePtr) NULL;
          dataWin->generic.content = (OpaquePtr) NULL;
          dataWin->generic.contentSize = 0;
          dataWin->generic.contentSize = 0;
          addContentElements (&dataWin->generic, numRegs);
          addContentElements (&dataWin->generic, numRegs);
          dataWin->detail.dataDisplayInfo.regsContent =
          dataWin->detail.dataDisplayInfo.regsContent =
            (TuiWinContent) dataWin->generic.content;
            (TuiWinContent) dataWin->generic.content;
          dataWin->detail.dataDisplayInfo.regsContentCount = numRegs;
          dataWin->detail.dataDisplayInfo.regsContentCount = numRegs;
        }
        }
      /*
      /*
         ** Now set the register names and values
         ** Now set the register names and values
       */
       */
      for (i = startRegNum; (i <= endRegNum); i++)
      for (i = startRegNum; (i <= endRegNum); i++)
        {
        {
          TuiGenWinInfoPtr dataItemWin;
          TuiGenWinInfoPtr dataItemWin;
 
 
          dataItemWin = &dataWin->detail.dataDisplayInfo.
          dataItemWin = &dataWin->detail.dataDisplayInfo.
            regsContent[i - startRegNum]->whichElement.dataWindow;
            regsContent[i - startRegNum]->whichElement.dataWindow;
          _tuiSetRegisterElement (
          _tuiSetRegisterElement (
                                   i,
                                   i,
                                   frame,
                                   frame,
           &((TuiWinElementPtr) dataItemWin->content[0])->whichElement.data,
           &((TuiWinElementPtr) dataItemWin->content[0])->whichElement.data,
                                   !allocatedHere && refreshValuesOnly);
                                   !allocatedHere && refreshValuesOnly);
        }
        }
      dataWin->detail.dataDisplayInfo.regsColumnCount =
      dataWin->detail.dataDisplayInfo.regsColumnCount =
        tuiCalculateRegsColumnCount (dpyType);
        tuiCalculateRegsColumnCount (dpyType);
#ifdef LATER
#ifdef LATER
      if (dataWin->detail.dataDisplayInfo.dataContentCount > 0)
      if (dataWin->detail.dataDisplayInfo.dataContentCount > 0)
        {
        {
          /* delete all the windows? */
          /* delete all the windows? */
          /* realloc content equal to dataContentCount + regsContentCount */
          /* realloc content equal to dataContentCount + regsContentCount */
          /* append dataWin->detail.dataDisplayInfo.dataContent to content */
          /* append dataWin->detail.dataDisplayInfo.dataContent to content */
        }
        }
#endif
#endif
      dataWin->generic.contentSize =
      dataWin->generic.contentSize =
        dataWin->detail.dataDisplayInfo.regsContentCount +
        dataWin->detail.dataDisplayInfo.regsContentCount +
        dataWin->detail.dataDisplayInfo.dataContentCount;
        dataWin->detail.dataDisplayInfo.dataContentCount;
      ret = TUI_SUCCESS;
      ret = TUI_SUCCESS;
    }
    }
 
 
  return ret;
  return ret;
}                               /* _tuiSetRegsContent */
}                               /* _tuiSetRegsContent */
 
 
 
 
/*
/*
   ** _tuiDisplayRegister().
   ** _tuiDisplayRegister().
   **        Function to display a register in a window.  If hilite is TRUE,
   **        Function to display a register in a window.  If hilite is TRUE,
   **        than the value will be displayed in reverse video
   **        than the value will be displayed in reverse video
 */
 */
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiDisplayRegister (
_tuiDisplayRegister (
                      int regNum,
                      int regNum,
                      TuiGenWinInfoPtr winInfo,         /* the data item window */
                      TuiGenWinInfoPtr winInfo,         /* the data item window */
                      enum precision_type precision)
                      enum precision_type precision)
#else
#else
_tuiDisplayRegister (regNum, winInfo, precision)
_tuiDisplayRegister (regNum, winInfo, precision)
     int regNum;
     int regNum;
     TuiGenWinInfoPtr winInfo;  /* the data item window */
     TuiGenWinInfoPtr winInfo;  /* the data item window */
     enum precision_type precision;
     enum precision_type precision;
#endif
#endif
{
{
  if (winInfo->handle != (WINDOW *) NULL)
  if (winInfo->handle != (WINDOW *) NULL)
    {
    {
      char buf[100];
      char buf[100];
      int valueCharsWide, labelWidth;
      int valueCharsWide, labelWidth;
      TuiDataElementPtr dataElementPtr = &((TuiWinContent)
      TuiDataElementPtr dataElementPtr = &((TuiWinContent)
                                    winInfo->content)[0]->whichElement.data;
                                    winInfo->content)[0]->whichElement.data;
 
 
      if (IS_64BIT ||
      if (IS_64BIT ||
          dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)
          dataWin->detail.dataDisplayInfo.regsDisplayType == TUI_DFLOAT_REGS)
        {
        {
          valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH;
          valueCharsWide = DOUBLE_FLOAT_VALUE_WIDTH;
          labelWidth = DOUBLE_FLOAT_LABEL_WIDTH;
          labelWidth = DOUBLE_FLOAT_LABEL_WIDTH;
        }
        }
      else
      else
        {
        {
          if (dataWin->detail.dataDisplayInfo.regsDisplayType ==
          if (dataWin->detail.dataDisplayInfo.regsDisplayType ==
              TUI_SFLOAT_REGS)
              TUI_SFLOAT_REGS)
            {
            {
              valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH;
              valueCharsWide = SINGLE_FLOAT_VALUE_WIDTH;
              labelWidth = SINGLE_FLOAT_LABEL_WIDTH;
              labelWidth = SINGLE_FLOAT_LABEL_WIDTH;
            }
            }
          else
          else
            {
            {
              valueCharsWide = SINGLE_VALUE_WIDTH;
              valueCharsWide = SINGLE_VALUE_WIDTH;
              labelWidth = SINGLE_LABEL_WIDTH;
              labelWidth = SINGLE_LABEL_WIDTH;
            }
            }
        }
        }
 
 
      buf[0] = (char) 0;
      buf[0] = (char) 0;
      _tuiRegisterFormat (buf,
      _tuiRegisterFormat (buf,
                          valueCharsWide + labelWidth,
                          valueCharsWide + labelWidth,
                          regNum,
                          regNum,
                          dataElementPtr,
                          dataElementPtr,
                          precision);
                          precision);
      if (dataElementPtr->highlight)
      if (dataElementPtr->highlight)
        wstandout (winInfo->handle);
        wstandout (winInfo->handle);
 
 
      werase (winInfo->handle);
      werase (winInfo->handle);
      wmove (winInfo->handle, 0, 0);
      wmove (winInfo->handle, 0, 0);
      waddstr (winInfo->handle, buf);
      waddstr (winInfo->handle, buf);
 
 
      if (dataElementPtr->highlight)
      if (dataElementPtr->highlight)
        wstandend (winInfo->handle);
        wstandend (winInfo->handle);
      tuiRefreshWin (winInfo);
      tuiRefreshWin (winInfo);
    }
    }
  return;
  return;
}                               /* _tuiDisplayRegister */
}                               /* _tuiDisplayRegister */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tui_vShowRegisters_commandSupport (
_tui_vShowRegisters_commandSupport (
                                     va_list args)
                                     va_list args)
#else
#else
_tui_vShowRegisters_commandSupport (args)
_tui_vShowRegisters_commandSupport (args)
     va_list args;
     va_list args;
#endif
#endif
{
{
  TuiRegisterDisplayType dpyType = va_arg (args, TuiRegisterDisplayType);
  TuiRegisterDisplayType dpyType = va_arg (args, TuiRegisterDisplayType);
 
 
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
    {                           /* Data window already displayed, show the registers */
    {                           /* Data window already displayed, show the registers */
      if (dataWin->detail.dataDisplayInfo.regsDisplayType != dpyType)
      if (dataWin->detail.dataDisplayInfo.regsDisplayType != dpyType)
        tuiShowRegisters (dpyType);
        tuiShowRegisters (dpyType);
    }
    }
  else
  else
    (tuiLayoutDef ())->regsDisplayType = dpyType;
    (tuiLayoutDef ())->regsDisplayType = dpyType;
 
 
  return;
  return;
}                               /* _tui_vShowRegisters_commandSupport */
}                               /* _tui_vShowRegisters_commandSupport */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiShowFloat_command (
_tuiShowFloat_command (
                        char *arg,
                        char *arg,
                        int fromTTY)
                        int fromTTY)
#else
#else
_tuiShowFloat_command (arg, fromTTY)
_tuiShowFloat_command (arg, fromTTY)
     char *arg;
     char *arg;
     int fromTTY;
     int fromTTY;
#endif
#endif
{
{
  if (m_winPtrIsNull (dataWin) || !dataWin->generic.isVisible ||
  if (m_winPtrIsNull (dataWin) || !dataWin->generic.isVisible ||
      (dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_SFLOAT_REGS &&
      (dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_SFLOAT_REGS &&
       dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_DFLOAT_REGS))
       dataWin->detail.dataDisplayInfo.regsDisplayType != TUI_DFLOAT_REGS))
    tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
    tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
           (tuiLayoutDef ())->floatRegsDisplayType);
           (tuiLayoutDef ())->floatRegsDisplayType);
 
 
  return;
  return;
}                               /* _tuiShowFloat_command */
}                               /* _tuiShowFloat_command */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiShowGeneral_command (
_tuiShowGeneral_command (
                          char *arg,
                          char *arg,
                          int fromTTY)
                          int fromTTY)
#else
#else
_tuiShowGeneral_command (arg, fromTTY)
_tuiShowGeneral_command (arg, fromTTY)
     char *arg;
     char *arg;
     int fromTTY;
     int fromTTY;
#endif
#endif
{
{
  tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
  tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
         TUI_GENERAL_REGS);
         TUI_GENERAL_REGS);
 
 
  return;
  return;
}                               /* _tuiShowGeneral_command */
}                               /* _tuiShowGeneral_command */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiShowSpecial_command (
_tuiShowSpecial_command (
                          char *arg,
                          char *arg,
                          int fromTTY)
                          int fromTTY)
#else
#else
_tuiShowSpecial_command (arg, fromTTY)
_tuiShowSpecial_command (arg, fromTTY)
     char *arg;
     char *arg;
     int fromTTY;
     int fromTTY;
#endif
#endif
{
{
  tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
  tuiDo ((TuiOpaqueFuncPtr) _tui_vShowRegisters_commandSupport,
         TUI_SPECIAL_REGS);
         TUI_SPECIAL_REGS);
 
 
  return;
  return;
}                               /* _tuiShowSpecial_command */
}                               /* _tuiShowSpecial_command */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiToggleFloatRegs_command (
_tuiToggleFloatRegs_command (
                              char *arg,
                              char *arg,
                              int fromTTY)
                              int fromTTY)
#else
#else
_tuiToggleFloatRegs_command (arg, fromTTY)
_tuiToggleFloatRegs_command (arg, fromTTY)
     char *arg;
     char *arg;
     int fromTTY;
     int fromTTY;
#endif
#endif
{
{
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
  if (m_winPtrNotNull (dataWin) && dataWin->generic.isVisible)
    tuiDo ((TuiOpaqueFuncPtr) tuiToggleFloatRegs);
    tuiDo ((TuiOpaqueFuncPtr) tuiToggleFloatRegs);
  else
  else
    {
    {
      TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
      TuiLayoutDefPtr layoutDef = tuiLayoutDef ();
 
 
      if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS)
      if (layoutDef->floatRegsDisplayType == TUI_SFLOAT_REGS)
        layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS;
        layoutDef->floatRegsDisplayType = TUI_DFLOAT_REGS;
      else
      else
        layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS;
        layoutDef->floatRegsDisplayType = TUI_SFLOAT_REGS;
    }
    }
 
 
 
 
  return;
  return;
}                               /* _tuiToggleFloatRegs_command */
}                               /* _tuiToggleFloatRegs_command */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiScrollRegsForward_command (
_tuiScrollRegsForward_command (
                                char *arg,
                                char *arg,
                                int fromTTY)
                                int fromTTY)
#else
#else
_tuiScrollRegsForward_command (arg, fromTTY)
_tuiScrollRegsForward_command (arg, fromTTY)
     char *arg;
     char *arg;
     int fromTTY;
     int fromTTY;
#endif
#endif
{
{
  tuiDo ((TuiOpaqueFuncPtr) tui_vScroll, FORWARD_SCROLL, dataWin, 1);
  tuiDo ((TuiOpaqueFuncPtr) tui_vScroll, FORWARD_SCROLL, dataWin, 1);
 
 
  return;
  return;
}                               /* _tuiScrollRegsForward_command */
}                               /* _tuiScrollRegsForward_command */
 
 
 
 
static void
static void
#ifdef __STDC__
#ifdef __STDC__
_tuiScrollRegsBackward_command (
_tuiScrollRegsBackward_command (
                                 char *arg,
                                 char *arg,
                                 int fromTTY)
                                 int fromTTY)
#else
#else
_tuiScrollRegsBackward_command (arg, fromTTY)
_tuiScrollRegsBackward_command (arg, fromTTY)
     char *arg;
     char *arg;
     int fromTTY;
     int fromTTY;
#endif
#endif
{
{
  tuiDo ((TuiOpaqueFuncPtr) tui_vScroll, BACKWARD_SCROLL, dataWin, 1);
  tuiDo ((TuiOpaqueFuncPtr) tui_vScroll, BACKWARD_SCROLL, dataWin, 1);
 
 
  return;
  return;
}                               /* _tuiScrollRegsBackward_command */
}                               /* _tuiScrollRegsBackward_command */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.