X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Fremote-e7000.c;h=e13401fe72d942ee45a2b14325397ce5b2144b6b;hb=93247f887c418796bf1fd70262567928e681d5cd;hp=4e7c97c8682d016fb95cdf587404e54b600eecad;hpb=39f770628a4eaf018fec8d55684bf2ec16ada9cc;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/remote-e7000.c b/gdb/remote-e7000.c index 4e7c97c868..e13401fe72 100644 --- a/gdb/remote-e7000.c +++ b/gdb/remote-e7000.c @@ -1,6 +1,8 @@ /* Remote debugging interface for Hitachi E7000 ICE, for GDB - Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 - Free Software Foundation, Inc. + + Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, + 2002 Free Software Foundation, Inc. + Contributed by Cygnus Support. Written by Steve Chamberlain for Cygnus Support. @@ -86,8 +88,6 @@ #define SR_REGNUM -1 #endif -extern void notice_quit (void); - extern void report_transfer_performance (unsigned long, time_t, time_t); extern char *sh_processor_type; @@ -117,7 +117,7 @@ static void expect_prompt (void); static int e7000_parse_device (char *args, char *dev_name, int baudrate); /* Variables. */ -static serial_t e7000_desc; +static struct serial *e7000_desc; /* Allow user to chose between using hardware breakpoints or memory. */ static int use_hard_breakpoints = 0; /* use sw breakpoints by default */ @@ -156,8 +156,8 @@ puts_e7000debug (char *buf) if (remote_debug) printf_unfiltered ("Sending %s\n", buf); - if (SERIAL_WRITE (e7000_desc, buf, strlen (buf))) - fprintf_unfiltered (gdb_stderr, "SERIAL_WRITE failed: %s\n", safe_strerror (errno)); + if (serial_write (e7000_desc, buf, strlen (buf))) + fprintf_unfiltered (gdb_stderr, "serial_write failed: %s\n", safe_strerror (errno)); /* And expect to see it echoed, unless using the pc interface */ #if 0 @@ -172,13 +172,13 @@ putchar_e7000 (int x) char b[1]; b[0] = x; - SERIAL_WRITE (e7000_desc, b, 1); + serial_write (e7000_desc, b, 1); } static void write_e7000 (char *s) { - SERIAL_WRITE (e7000_desc, s, strlen (s)); + serial_write (e7000_desc, s, strlen (s)); } static int @@ -200,7 +200,7 @@ readchar (int timeout) do { - c = SERIAL_READCHAR (e7000_desc, timeout); + c = serial_readchar (e7000_desc, timeout); } while (c > 127); @@ -260,21 +260,6 @@ expect (char *string) while (1) { c = readchar (timeout); -#if 0 - notice_quit (); - if (quit_flag == 1) - { - if (ctrl_c) - { - putchar_e7000 (CTRLC); - --ctrl_c; - } - else - { - quit (); - } - } -#endif if (echo) { @@ -662,13 +647,17 @@ e7000_open (char *args, int from_tty) push_target (&e7000_ops); - e7000_desc = SERIAL_OPEN (dev_name); + e7000_desc = serial_open (dev_name); if (!e7000_desc) perror_with_name (dev_name); - SERIAL_SETBAUDRATE (e7000_desc, baudrate); - SERIAL_RAW (e7000_desc); + if (serial_setbaudrate (e7000_desc, baudrate)) + { + serial_close (e7000_desc); + perror_with_name (dev_name); + } + serial_raw (e7000_desc); #ifdef GDB_TARGET_IS_H8300 h8300hmode = 1; @@ -691,7 +680,7 @@ e7000_close (int quitting) { if (e7000_desc) { - SERIAL_CLOSE (e7000_desc); + serial_close (e7000_desc); e7000_desc = 0; } } @@ -802,6 +791,9 @@ fetch_regs_from_dump (int (*nextchar) (), char *want) int thischar = nextchar (); + if (want == NULL) + internal_error (__FILE__, __LINE__, "Register set not selected."); + while (*want) { switch (*want) @@ -904,7 +896,7 @@ static void e7000_fetch_registers (void) { int regno; - char *wanted; + char *wanted = NULL; puts_e7000debug ("R\r"); @@ -979,18 +971,18 @@ e7000_store_register (int regno) { if (regno <= 7) { - sprintf (buf, ".ER%d %lx\r", regno, read_register (regno)); + sprintf (buf, ".ER%d %s\r", regno, phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == PC_REGNUM) { - sprintf (buf, ".PC %lx\r", read_register (regno)); + sprintf (buf, ".PC %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } #ifdef CCR_REGNUM else if (regno == CCR_REGNUM) { - sprintf (buf, ".CCR %lx\r", read_register (regno)); + sprintf (buf, ".CCR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } #endif @@ -1000,48 +992,48 @@ e7000_store_register (int regno) { if (regno == PC_REGNUM) { - sprintf (buf, ".PC %lx\r", read_register (regno)); + sprintf (buf, ".PC %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == SR_REGNUM) { - sprintf (buf, ".SR %lx\r", read_register (regno)); + sprintf (buf, ".SR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == PR_REGNUM) { - sprintf (buf, ".PR %lx\r", read_register (regno)); + sprintf (buf, ".PR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == GBR_REGNUM) { - sprintf (buf, ".GBR %lx\r", read_register (regno)); + sprintf (buf, ".GBR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == VBR_REGNUM) { - sprintf (buf, ".VBR %lx\r", read_register (regno)); + sprintf (buf, ".VBR %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == MACH_REGNUM) { - sprintf (buf, ".MACH %lx\r", read_register (regno)); + sprintf (buf, ".MACH %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else if (regno == MACL_REGNUM) { - sprintf (buf, ".MACL %lx\r", read_register (regno)); + sprintf (buf, ".MACL %s\r", phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } else { - sprintf (buf, ".R%d %lx\r", regno, read_register (regno)); + sprintf (buf, ".R%d %s\r", regno, phex_nz (read_register (regno), 0)); puts_e7000debug (buf); } } @@ -1180,7 +1172,7 @@ write_large (CORE_ADDR memaddr, unsigned char *myaddr, int len) compose[where++] = '\n'; compose[where++] = 0; - SERIAL_WRITE (e7000_desc, compose, where); + serial_write (e7000_desc, compose, where); j = readchar (0); if (j == -1) { @@ -1473,10 +1465,9 @@ fast_but_for_the_pause_e7000_read_inferior_memory (CORE_ADDR memaddr, Returns the number of bytes transferred. */ static int -e7000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, - int len, int write, - struct mem_attrib *attrib ATTRIBUTE_UNUSED, - struct target_ops *target ATTRIBUTE_UNUSED) +e7000_xfer_inferior_memory (CORE_ADDR memaddr, char *myaddr, int len, + int write, struct mem_attrib *attrib, + struct target_ops *target) { if (write) return e7000_write_inferior_memory (memaddr, myaddr, len); @@ -1583,10 +1574,10 @@ e7000_load (char *args, int from_tty) section_size = bfd_get_section_size_before_reloc (section); if (!quiet) - printf_filtered ("[Loading section %s at 0x%x (%ud bytes)]\n", + printf_filtered ("[Loading section %s at 0x%s (%s bytes)]\n", bfd_get_section_name (pbfd, section), - section_address, - section_size); + paddr_nz (section_address), + paddr_u (section_size)); fptr = 0; @@ -1614,9 +1605,9 @@ e7000_load (char *args, int from_tty) bfd_get_section_contents (pbfd, section, buf + 10, fptr, count); - if (SERIAL_WRITE (e7000_desc, buf, count + 10)) + if (serial_write (e7000_desc, buf, count + 10)) fprintf_unfiltered (gdb_stderr, - "e7000_load: SERIAL_WRITE failed: %s\n", + "e7000_load: serial_write failed: %s\n", safe_strerror (errno)); expect ("OK"); @@ -1660,7 +1651,7 @@ e7000_load (char *args, int from_tty) entry = bfd_get_start_address (pbfd); if (!quiet) - printf_unfiltered ("[Starting %s at 0x%x]\n", filename, entry); + printf_unfiltered ("[Starting %s at 0x%s]\n", filename, paddr_nz (entry)); /* start_routine (entry); */ } @@ -1978,7 +1969,7 @@ sub2_from_pc (void) REGISTER_RAW_SIZE (PC_REGNUM), read_register (PC_REGNUM) - 2); supply_register (PC_REGNUM, buf); - sprintf (buf2, ".PC %lx\r", read_register (PC_REGNUM)); + sprintf (buf2, ".PC %s\r", phex_nz (read_register (PC_REGNUM), 0)); puts_e7000debug (buf2); } @@ -2007,7 +1998,7 @@ e7000_wait (ptid_t ptid, struct target_waitstatus *status) int running_count = 0; int had_sleep = 0; int loop = 1; - char *wanted_nopc; + char *wanted_nopc = NULL; /* Then echo chars until PC= string seen */ gch (); /* Drop cr */