From e7ddc197153de3bcee60451d867d95a13d5f146f Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 17 Jun 2008 00:34:37 +0000 Subject: [PATCH] * 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. --- sim/m32c/ChangeLog | 10 ++++++++++ sim/m32c/m32c.opc | 4 ++-- sim/m32c/main.c | 7 +++++-- sim/m32c/mem.c | 9 +++++---- sim/m32c/mem.h | 2 ++ 5 files changed, 24 insertions(+), 8 deletions(-) diff --git a/sim/m32c/ChangeLog b/sim/m32c/ChangeLog index 8a30574731a..4788c8ba3ac 100644 --- a/sim/m32c/ChangeLog +++ b/sim/m32c/ChangeLog @@ -1,3 +1,13 @@ +2008-06-16 DJ Delorie + + * 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. + 2008-06-06 Vladimir Prus Daniel Jacobowitz Joseph Myers diff --git a/sim/m32c/m32c.opc b/sim/m32c/m32c.opc index 9f5bd4ab4e7..3fe6cf069a8 100644 --- a/sim/m32c/m32c.opc +++ b/sim/m32c/m32c.opc @@ -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 (); diff --git a/sim/m32c/main.c b/sim/m32c/main.c index 7187210ce5f..243be70e913 100644 --- a/sim/m32c/main.c +++ b/sim/m32c/main.c @@ -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); } diff --git a/sim/m32c/mem.c b/sim/m32c/mem.c index 474fc5e75f9..20d23500b7c 100644 --- a/sim/m32c/mem.c +++ b/sim/m32c/mem.c @@ -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 */ diff --git a/sim/m32c/mem.h b/sim/m32c/mem.h index ad53a01f595..52ad2d67e35 100644 --- a/sim/m32c/mem.h +++ b/sim/m32c/mem.h @@ -41,3 +41,5 @@ void mem_get_blk (int address, void *bufptr, int nbytes); int sign_ext (int v, int bits); void m32c_sim_restore_console (); + +extern int m32c_use_raw_console; -- 2.30.2