aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
Diffstat (limited to 'sim')
-rw-r--r--sim/m32c/ChangeLog10
-rw-r--r--sim/m32c/m32c.opc4
-rw-r--r--sim/m32c/main.c7
-rw-r--r--sim/m32c/mem.c9
-rw-r--r--sim/m32c/mem.h2
5 files changed, 24 insertions, 8 deletions
diff --git a/sim/m32c/ChangeLog b/sim/m32c/ChangeLog
index 8a30574..4788c8b 100644
--- a/sim/m32c/ChangeLog
+++ b/sim/m32c/ChangeLog
@@ -1,3 +1,13 @@
+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.
+
2008-06-06 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Joseph Myers <joseph@codesourcery.com>
diff --git a/sim/m32c/m32c.opc b/sim/m32c/m32c.opc
index 9f5bd4a..3fe6cf0 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 7187210..243be70 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 474fc5e..20d2350 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 ad53a01..52ad2d6 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;