* remote-udi.c, remote-adapt.c, remote-mm.c: Move processor_type
authorJim Kingdon <jkingdon@engr.sgi.com>
Thu, 16 Sep 1993 23:45:46 +0000 (23:45 +0000)
committerJim Kingdon <jkingdon@engr.sgi.com>
Thu, 16 Sep 1993 23:45:46 +0000 (23:45 +0000)
to tm-a29k.h and a29k-tdep.c and make it an enum.
* a29k-tdep.c (a29k_get_processor_type): New function.  Fix many
aspects of how we detected the processor type.
* remote-udi.c, remote-adapt.c, remote-mm.c (*_open): Call it
rather than figuring out the type ourselves.

gdb/ChangeLog
gdb/a29k-tdep.c
gdb/config/a29k/tm-a29k.h
gdb/remote-adapt.c
gdb/remote-mm.c
gdb/remote-udi.c

index c0e0d693f60fb4261d27fddbfbfdf7816a02173f..b0902ad0db09d07c4e4fa9144b3a5387510ed263 100644 (file)
@@ -8,6 +8,15 @@ Thu Sep 16 12:34:01 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)
        * dbxread.c (copy_pending): Deal with END NULL.
        (process_one_symbol): Add comments about what common_block NULL means.
 
+Wed Sep 15 14:50:26 1993  Jim Kingdon  (kingdon@cirdan.cygnus.com)
+
+       * remote-udi.c, remote-adapt.c, remote-mm.c: Move processor_type
+       to tm-a29k.h and a29k-tdep.c and make it an enum.
+       * a29k-tdep.c (a29k_get_processor_type): New function.  Fix many
+       aspects of how we detected the processor type.
+       * remote-udi.c, remote-adapt.c, remote-mm.c (*_open): Call it
+       rather than figuring out the type ourselves.
+
 Thu Sep 16 12:12:59 1993  Stu Grossman  (grossman at cygnus.com)
 
        * sparc-stub.c (_trap_low):  Do restore/save sequence after
index 4b5fa933737921bb683cb9af08c1030fc635f10f..f5843b4e9e6a805b4e538fdf9dfaa6999c0c9e05 100644 (file)
@@ -817,6 +817,50 @@ push_dummy_frame ()
   write_register (lrnum, read_register (NPC_REGNUM));
 }
 
+enum a29k_processor_types processor_type = a29k_unknown;
+
+void
+a29k_get_processor_type ()
+{
+  unsigned int cfg_reg = (unsigned int) read_register (CFG_REGNUM);
+
+  /* Most of these don't have freeze mode.  */
+  processor_type = a29k_no_freeze_mode;
+
+  switch ((cfg_reg >> 28) & 0xf)
+    {
+    case 0:
+      fprintf_filtered (stderr, "Remote debugging an Am29000");
+      break;
+    case 1:
+      fprintf_filtered (stderr, "Remote debugging an Am29005");
+      break;
+    case 2:
+      fprintf_filtered (stderr, "Remote debugging an Am29050");
+      processor_type = a29k_freeze_mode;
+      break;
+    case 3:
+      fprintf_filtered (stderr, "Remote debugging an Am29035");
+      break;
+    case 4:
+      fprintf_filtered (stderr, "Remote debugging an Am29030");
+      break;
+    case 5:
+      fprintf_filtered (stderr, "Remote debugging an Am2920*");
+      break;
+    case 6:
+      fprintf_filtered (stderr, "Remote debugging an Am2924*");
+      break;
+    case 7:
+      fprintf_filtered (stderr, "Remote debugging an Am29040");
+      break;
+    default:
+      fprintf_filtered (stderr, "Remote debugging an unknown Am29k\n");
+      /* Don't bother to print the revision.  */
+      return;
+    }
+  fprintf_filtered (stderr, " revision %c\n", 'A' + ((cfg_reg >> 24) & 0x0f));
+}
 
 void
 _initialize_29k()
index 9306c967b7bbb06ae1a8032b3455143da303f666..0b027bebb46beefb79a82b581c93dca17a6e8596 100644 (file)
@@ -715,3 +715,14 @@ extern void pop_frame ();
                "Invalid register number %d in symbol table entry for %s\n", \
                 (num), SYMBOL_SOURCE_NAME (sym)), (num)        \
           : (num))
+
+extern enum a29k_processor_types {
+  a29k_unknown,
+
+  /* Bit 0x400 of the CPS does *not* identify freeze mode, i.e. 29000,
+     29030, etc.  */
+  a29k_no_freeze_mode,
+
+  /* Bit 0x400 of the CPS does identify freeze mode, i.e. 29050.  */
+  a29k_freeze_mode
+} processor_type;
index ff07b4b6d7e3436014f798e5bb7afa7d88d48850..575bb6f66d47cabca54069f06b937bd91910bfea 100644 (file)
@@ -54,23 +54,13 @@ static void adapt_store_registers ();
 static void adapt_close ();
 static int  adapt_clear_breakpoints();
 
-/* 
- * Processor types. It is assumed that the adapt has the correct 
- * ROM for the given processor. 
- */
-#define TYPE_UNKNOWN   0
-#define TYPE_A29000    1
-#define TYPE_A29030    2
-#define TYPE_A29050    3
-static char *processor_name[] = { "Unknown", "A29000", "A29030", "A29050" };
-static int processor_type=TYPE_UNKNOWN;
-
 #define FREEZE_MODE    (read_register(CPS_REGNUM) && 0x400) 
-#define USE_SHADOW_PC   ((processor_type == TYPE_A29050) && FREEZE_MODE)
+#define USE_SHADOW_PC  ((processor_type == a29k_freeze_mode) && FREEZE_MODE)
 
 /* Can't seem to get binary coff working */
 #define ASCII_COFF             /* Adapt will be downloaded with ascii coff */
 
+/* FIXME: Replace with `set remotedebug'.  */
 #define LOG_FILE "adapt.log"
 #if defined (LOG_FILE)
 FILE *log_file=NULL;
@@ -570,28 +560,12 @@ the baud rate, and the name of the program to run on the remote system.");
   /* Clear any break points */
   adapt_clear_breakpoints();
 
-  /* Determine the processor revision level */
-  prl = (unsigned int)read_register(CFG_REGNUM) >> 24;
-  if (prl == 0x03) { 
-       processor_type = TYPE_A29000;  
-  } else if ((prl&0xf0) == 0x40) {     /* 29030 = 0x4* */
-       processor_type = TYPE_A29030;  
-       fprintf_filtered(stderr,"WARNING: debugging of A29030 not tested.\n");
-  } else if ((prl&0xf0) == 0x20) {     /* 29050 = 0x2* */
-       processor_type = TYPE_A29050;  
-       fprintf_filtered(stderr,"WARNING: debugging of A29050 not tested.\n");
-  } else {
-       processor_type = TYPE_UNKNOWN;  
-       fprintf_filtered(stderr,"WARNING: processor type unknown.\n");
-  }
-
   /* Print out some stuff, letting the user now what's going on */
-  printf_filtered("Remote debugging on an %s connect to an Adapt via %s.\n",
-               processor_name[processor_type],dev_name);
+  printf_filtered("Connected to an Adapt via %s.\n", dev_name);
     /* FIXME: can this restriction be removed? */
   printf_filtered("Remote debugging using virtual addresses works only\n");
   printf_filtered("\twhen virtual addresses map 1:1 to physical addresses.\n"); 
-  if (processor_type != TYPE_A29050) {
+  if (processor_type != a29k_freeze_mode) {
        fprintf_filtered(stderr,
        "Freeze-mode debugging not available, and can only be done on an A29050.\n");
   }
index 58a4653a8247253c215238dce8d6bbde4a366d2a..3387ee5efdf547d25663cefe2ac2c86f354c270f 100644 (file)
@@ -62,18 +62,10 @@ static int expect_msg();
 static void init_target_mm();
 static int mm_memory_space();
 
-/*
- * Processor types. 
- */
-#define TYPE_UNKNOWN    0
-#define TYPE_A29000     1
-#define TYPE_A29030     2
-#define TYPE_A29050     3
-static  char *processor_name[] = { "Unknown", "A29000", "A29030", "A29050" };
-static  int processor_type=TYPE_UNKNOWN;
 #define FREEZE_MODE     (read_register(CPS_REGNUM) && 0x400)
-#define USE_SHADOW_PC  ((processor_type == TYPE_A29050) && FREEZE_MODE) 
+#define USE_SHADOW_PC  ((processor_type == a29k_freeze_mode) && FREEZE_MODE)
 
+/* FIXME: Replace with `set remotedebug'.  */
 #define LLOG_FILE "minimon.log"
 #if defined (LOG_FILE)
 FILE *log_file;
@@ -344,30 +336,15 @@ erroid:
 
    expect_msg(CONFIG,in_msg_buf,1);
 
-  /* Determine the processor revision level */
-  /* FIXME: this code is the same as in remote-adapt.c */
-  prl = (unsigned int)read_register(CFG_REGNUM) >> 24;
-  if (prl == 0x03) {
-        processor_type = TYPE_A29000;
-  } else if ((prl&0xf0) == 0x40) {      /* 29030 = 0x4* */
-        processor_type = TYPE_A29030;
-        fprintf_filtered(stderr,"WARNING: debugging of A29030 not tested.\n");
-  } else if ((prl&0xf0) == 0x20) {      /* 29050 = 0x2* */
-        processor_type = TYPE_A29050;
-        fprintf_filtered(stderr,"WARNING: debugging of A29050 not tested.\n");
-  } else {
-        processor_type = TYPE_UNKNOWN;
-        fprintf_filtered(stderr,"WARNING: processor type unknown.\n");
-  }
+  a29k_get_processor_type ();
 
   /* Print out some stuff, letting the user now what's going on */
-  printf_filtered("Remote debugging on an %s connect to MiniMon via %s.\n",
-                processor_name[processor_type],dev_name);
+  printf_filtered("Connected to MiniMon via %s.\n", dev_name);
     /* FIXME: can this restriction be removed? */
   printf_filtered("Remote debugging using virtual addresses works only\n");
   printf_filtered("\twhen virtual addresses map 1:1 to physical addresses.\n")
 ;
-  if (processor_type != TYPE_A29050) {
+  if (processor_type != a29k_freeze_mode) {
         fprintf_filtered(stderr,
         "Freeze-mode debugging not available, and can only be done on an A29050.\n");
   }
index f74569bcc73c8a5f13430a3af4f6a32c50f308f9..e04225aa49a1b39eec29bb0b95cbfe4ea90715dd 100644 (file)
@@ -68,18 +68,11 @@ static int udi_read_inferior_memory PARAMS ((CORE_ADDR memaddr, char *myaddr,
                                             int len));
 static void download PARAMS ((char *load_arg_string, int from_tty));
 char   CoffFileName[100] = "";
-/*
- * Processor types. 
- */
-#define TYPE_UNKNOWN    0
-#define TYPE_A29000     1
-#define TYPE_A29030     2
-#define TYPE_A29050     3
-static  char *processor_name[] = { "Unknown", "Am29000", "Am29030", "Am29050" };
-static  int processor_type=TYPE_UNKNOWN;
+
 #define FREEZE_MODE     (read_register(CPS_REGNUM) & 0x400)
-#define USE_SHADOW_PC  ((processor_type == TYPE_A29050) && FREEZE_MODE) 
+#define USE_SHADOW_PC  ((processor_type == a29k_freeze_mode) && FREEZE_MODE)
 
+/* FIXME: Replace with `set remotedebug'.  Also, seems not to be used.  */
 #define LLOG_FILE "udi.log"
 #if defined (LOG_FILE)
 FILE *log_file;
@@ -273,31 +266,8 @@ udi_open (name, from_tty)
        }
     }
 
-  /* Determine the processor revision level */
-  prl = (unsigned int)read_register (CFG_REGNUM) >> 24;
-  if ((prl&0xe0) == 0)
-    {
-      fprintf_filtered (stderr,
-                       "Remote debugging Am29000 rev %c\n",'A'+(prl&0x1f));
-      processor_type = TYPE_A29000;
-    }
-  else if ((prl&0xe0) == 0x40)       /* 29030 = 0x4* */
-    {
-      fprintf_filtered (stderr,
-                       "Remote debugging Am2903* rev %c\n",'A'+(prl&0x1f));
-      processor_type = TYPE_A29030;
-    }
-  else if ((prl&0xe0) == 0x20)       /* 29050 = 0x2* */
-    {
-      fprintf_filtered (stderr,
-                       "Remote debugging Am29050 rev %c\n",'A'+(prl&0x1f));
-      processor_type = TYPE_A29050;
-    }
-  else
-    {
-      processor_type = TYPE_UNKNOWN;
-      fprintf_filtered (stderr,"WARNING: processor type unknown.\n");
-    }
+  a29k_get_processor_type ();
+
   if (UDICreateProcess (&PId))
      fprintf(stderr, "UDICreateProcess() failed\n");
 
@@ -307,9 +277,8 @@ udi_open (name, from_tty)
     error ("UDICapabilities() failed");
   if (from_tty)
     {
-      printf_filtered ("Remote debugging an %s connected via UDI socket,\n\
+      printf_filtered ("Connected via UDI socket,\n\
  DFE-IPC version %x.%x.%x  TIP-IPC version %x.%x.%x  TIP version %x.%x.%x\n %s\n",
-                      processor_name[processor_type],
                       (DFEIPCId>>8)&0xf, (DFEIPCId>>4)&0xf, DFEIPCId&0xf,
                       (TIPIPCId>>8)&0xf, (TIPIPCId>>4)&0xf, TIPIPCId&0xf,
                       (TargetId>>8)&0xf, (TargetId>>4)&0xf, TargetId&0xf,