This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[m32c sim] fix raw console logic
- From: DJ Delorie <dj at redhat dot com>
- To: gdb-patches at sourceware dot org
- Date: Mon, 16 Jun 2008 20:39:41 -0400
- Subject: [m32c sim] fix raw console logic
Fixed raw console logic. Applied.
2008-06-16 DJ Delorie <dj@redhat.com>
* m32c.opc (BRK, GDBBRK): Remove debug logic.
* main.c (main): Add option to set raw console.
* mem.h (m32c_use_raw_console): Declare.
* mem.c (m32c_sim_restore_console): Only restore console if it's
been previously set.
(m32c_use_raw_console): Define.
(mem_get_byte): Set raw console if m32c_use_raw_console is set.
Index: m32c.opc
===================================================================
RCS file: /cvs/src/src/sim/m32c/m32c.opc,v
retrieving revision 1.5
retrieving revision 1.6
diff -p -U3 -r1.5 -r1.6
--- m32c.opc 6 Jun 2008 19:18:14 -0000 1.5
+++ m32c.opc 17 Jun 2008 00:34:37 -0000 1.6
@@ -680,7 +680,7 @@ next_opcode:
/* We report the break to our caller with the PC still pointing at the
breakpoint instruction. */
put_reg (pc, m32c_opcode_pc);
- if (verbose || 1)
+ if (verbose)
printf("[break]\n");
if (in_gdb || (regs.r_intbl == 0 && regs.r_intbh == 0))
return M32C_MAKE_HIT_BREAK ();
@@ -700,7 +700,7 @@ next_opcode:
/* We report the break to our caller with the PC still pointing at the
breakpoint instruction. */
put_reg (pc, m32c_opcode_pc);
- if (verbose || 1)
+ if (verbose)
printf("[gdb break]\n");
return M32C_MAKE_HIT_BREAK ();
Index: main.c
===================================================================
RCS file: /cvs/src/src/sim/m32c/main.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -p -U3 -r1.5 -r1.6
--- main.c 6 Jun 2008 19:18:15 -0000 1.5
+++ main.c 17 Jun 2008 00:34:37 -0000 1.6
@@ -122,7 +122,7 @@ main (int argc, char **argv)
in_gdb = 0;
- while ((o = getopt (argc, argv, "tc:vdm:")) != -1)
+ while ((o = getopt (argc, argv, "tc:vdm:C")) != -1)
switch (o)
{
case 't':
@@ -131,6 +131,9 @@ main (int argc, char **argv)
case 'c':
console_port_s = optarg;
break;
+ case 'C':
+ m32c_use_raw_console = 1;
+ break;
case 'v':
verbose++;
break;
@@ -151,7 +154,7 @@ main (int argc, char **argv)
break;
case '?':
fprintf (stderr,
- "usage: run [-v] [-t] [-d] [-m r8c|m16c|m32cm|m32c]"
+ "usage: run [-v] [-C] [-c port] [-t] [-d] [-m r8c|m16c|m32cm|m32c]"
" program\n");
exit (1);
}
Index: mem.c
===================================================================
RCS file: /cvs/src/src/sim/m32c/mem.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -p -U3 -r1.7 -r1.8
--- mem.c 6 Jun 2008 19:26:10 -0000 1.7
+++ mem.c 17 Jun 2008 00:34:37 -0000 1.8
@@ -50,6 +50,7 @@ static unsigned char **pt[L1_LEN];
int m32c_console_ifd = 0;
int m32c_console_ofd = 1;
+int m32c_use_raw_console = 0;
#ifdef TIMER_A
Timer_A timer_a;
@@ -394,7 +395,8 @@ stdin_ready ()
void
m32c_sim_restore_console ()
{
- tcsetattr (m32c_console_ifd, TCSANOW, &oattr);
+ if (console_raw)
+ tcsetattr (m32c_console_ifd, TCSANOW, &oattr);
console_raw = 0;
}
@@ -409,9 +411,9 @@ mem_get_byte (int address)
case 0x2ed: /* m32c uart1c1 */
case 0x3ad: /* m16c uart1c1 */
-#if 0
- if (!console_raw)
+ if (!console_raw && m32c_use_raw_console)
{
+ struct termios attr;
tcgetattr (m32c_console_ifd, &attr);
tcgetattr (m32c_console_ifd, &oattr);
/* We want each key to be sent as the user presses them. */
@@ -420,7 +422,6 @@ mem_get_byte (int address)
console_raw = 1;
atexit (m32c_sim_restore_console);
}
-#endif
if (stdin_ready ())
return 0x02; /* tx empty and rx full */
Index: mem.h
===================================================================
RCS file: /cvs/src/src/sim/m32c/mem.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -p -U3 -r1.5 -r1.6
--- mem.h 6 Jun 2008 19:26:10 -0000 1.5
+++ mem.h 17 Jun 2008 00:34:37 -0000 1.6
@@ -41,3 +41,5 @@ void mem_get_blk (int address, void *buf
int sign_ext (int v, int bits);
void m32c_sim_restore_console ();
+
+extern int m32c_use_raw_console;