X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fremote-hms.c;h=92cab9a5200d22bb9df9f3ee79898b6feddbd1ad;hb=25286543da71d927d59a7479e7e1bd0a1b9e1321;hp=a21d86e79e0e2b96c99193cfd0507c45667fce01;hpb=ec25d19bd6ae55325745802d87cdad4706d9739e;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/remote-hms.c b/gdb/remote-hms.c index a21d86e79e..92cab9a520 100644 --- a/gdb/remote-hms.c +++ b/gdb/remote-hms.c @@ -32,6 +32,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "terminal.h" #include "target.h" #include "gdbcore.h" +#include "serial.h" /* External data declarations */ extern int stop_soon_quietly; /* for wait_for_inferior */ @@ -49,6 +50,9 @@ extern struct target_ops hms_ops; static int quiet = 1; + +serial_t desc; + /***********************************************************************/ /* Caching stuff stolen from remote-nindy.c */ @@ -232,7 +236,7 @@ static const char *dev_name; starts. */ int is_open = 0; -int +int check_open () { if (!is_open) @@ -251,9 +255,9 @@ readchar () { int buf; - buf = serial_readchar (timeout); + buf = SERIAL_READCHAR (desc, timeout); - if (buf < 0) + if (buf == SERIAL_TIMEOUT) error ("Timeout reading from remote system."); if (!quiet) @@ -267,8 +271,8 @@ readchar_nofail () { int buf; - buf = serial_readchar (timeout); - if (buf < 0) + buf = SERIAL_READCHAR (desc, timeout); + if (buf == SERIAL_TIMEOUT) buf = 0; if (!quiet) printf ("%c", buf); @@ -541,7 +545,7 @@ is_baudrate_right () while (1) { - ok = serial_readchar (timeout); + ok = SERIAL_READCHAR (desc, timeout); if (ok < 0) break; } @@ -557,35 +561,16 @@ is_baudrate_right () static void set_rate () { - if (!serial_setbaudrate (baudrate)) + if (!SERIAL_SETBAUDRATE (desc, baudrate)) error ("Can't set baudrate"); } -static void -get_baudrate_right () -{ -#if 0 - while (!is_baudrate_right ()) - { - baudrate = serial_nextbaudrate (baudrate); - if (baudrate == 0) - { - printf_filtered ("Board not yet in sync\n"); - break; - } - printf_filtered ("Board not responding, trying %d baud\n", baudrate); - QUIT; - serial_setbaudrate (baudrate); - } -#endif -} static void hms_open (name, from_tty) char *name; int from_tty; { - unsigned int prl; char *p; @@ -595,19 +580,18 @@ hms_open (name, from_tty) } if (is_open) hms_close (0); - if (name && strlen (name)) - dev_name = strdup (name); - if (!serial_open (dev_name)) + dev_name = strdup (name); + + if (!(desc = SERIAL_OPEN (dev_name))) perror_with_name ((char *) dev_name); - serial_raw (); + + SERIAL_RAW (desc); is_open = 1; dcache_init (); - get_baudrate_right (); - /* Hello? Are you there? */ - serial_write ("\r", 1); + SERIAL_WRITE (desc, "\r", 1); expect_prompt (); /* Clear any break points */ @@ -622,14 +606,14 @@ static void hms_close (quitting) int quitting; { - /* Clear any break points */ hms_clear_breakpoints (); - - /* Put this port back into REMOTE mode */ sleep (1); /* Let any output make it all the way back */ - serial_write ("R\r", 2); - serial_close (); + if (is_open) + { + SERIAL_WRITE (desc, "R\r", 2); + SERIAL_CLOSE (desc); + } is_open = 0; } @@ -654,8 +638,8 @@ hms_detach (args, from_tty) /* Tell the remote machine to resume. */ void -hms_resume (step, sig) - int step, sig; +hms_resume (pid, step, sig) + int pid, step, sig; { dcache_flush (); @@ -794,13 +778,13 @@ static char * get_reg_name (regno) int regno; { - static char *rn[NUM_REGS] = REGISTER_NAMES; + static char *rn[] = REGISTER_NAMES; return rn[regno]; } /* Read the remote registers. */ -static int +static int gethex (length, start, ok) unsigned int length; char *start; @@ -850,7 +834,6 @@ timed_read (buf, n, timeout) } return i; - } hms_write (a, l) @@ -858,7 +841,7 @@ hms_write (a, l) { int i; - serial_write (a, l); + SERIAL_WRITE (desc, a, l); if (!quiet) for (i = 0; i < l; i++) @@ -938,8 +921,6 @@ static void hms_store_register (regno) int regno; { - - /* printf("hms_store_register() called.\n"); fflush(stdout); /* */ if (regno == -1) { for (regno = 0; regno < NUM_REGS; regno++) @@ -1218,6 +1199,7 @@ hms_read_inferior_memory (memaddr, myaddr, len) } } + expect ("emory>"); hms_write_cr (" "); expect_prompt (); return len; @@ -1233,7 +1215,6 @@ hms_before_main_loop () char ttyname[100]; char *p, *p2; extern FILE *instream; - extern jmp_buf to_top_level; push_target (&hms_ops); } @@ -1299,6 +1280,7 @@ static void hms_mourn () { hms_clear_breakpoints (); + unpush_target (&hms_ops); generic_mourn_inferior (); } @@ -1385,13 +1367,11 @@ hms_speed (s) int newrate = atoi (s); int which = 0; - if (!serial_setbaudrate (newrate)) + if (SERIAL_SETBAUDRATE (desc, newrate)) error ("Can't use %d baud\n", newrate); printf_filtered ("Checking target is in sync\n"); - get_baudrate_right (); - baudrate = newrate; printf_filtered ("Sending commands to set target to %d\n", baudrate);