summaryrefslogtreecommitdiffstats
path: root/c/src
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-02-17 18:32:44 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-02-17 18:32:44 +0000
commitc8dcab1e75bf02cbd1a8f1cc3514b5accb08c943 (patch)
tree0081fd6569779f70d6c8e8b0a544c5c004a8832f /c/src
parent2009-02-17 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-c8dcab1e75bf02cbd1a8f1cc3514b5accb08c943.tar.bz2
2009-02-17 Till Straumann <strauman@slac.stanford.edu>
PR 1370/bsps * console/console.c: mvme167 console driver BSP_output_char fails to convert \n -> \n\r
Diffstat (limited to 'c/src')
-rw-r--r--c/src/lib/libbsp/m68k/mvme167/ChangeLog6
-rw-r--r--c/src/lib/libbsp/m68k/mvme167/console/console.c15
2 files changed, 17 insertions, 4 deletions
diff --git a/c/src/lib/libbsp/m68k/mvme167/ChangeLog b/c/src/lib/libbsp/m68k/mvme167/ChangeLog
index 0c4c499f09..06253f2297 100644
--- a/c/src/lib/libbsp/m68k/mvme167/ChangeLog
+++ b/c/src/lib/libbsp/m68k/mvme167/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-17 Till Straumann <strauman@slac.stanford.edu>
+
+ PR 1370/bsps
+ * console/console.c: mvme167 console driver BSP_output_char fails to
+ convert \n -> \n\r
+
2008-12-08 Ralf Corsépius <ralf.corsepius@rtems.org>
* bsp_specs: Backport from CVS-HEAD.
diff --git a/c/src/lib/libbsp/m68k/mvme167/console/console.c b/c/src/lib/libbsp/m68k/mvme167/console/console.c
index 3d981fe664..e325b44a6c 100644
--- a/c/src/lib/libbsp/m68k/mvme167/console/console.c
+++ b/c/src/lib/libbsp/m68k/mvme167/console/console.c
@@ -161,6 +161,15 @@ int _167Bug_pollWrite( int minor, const char *buf, int len );
static void _BSP_output_char( char c );
BSP_output_char_function_type BSP_output_char = _BSP_output_char;
+/* '\r' character in memory. This used to live on
+ * the stack but storing the '\r' character is
+ * optimized away by gcc-4.3.2 (since it seems to
+ * be unused [only referenced from inline assembly
+ * code in _167Bug_pollWrite()]).
+ * Hence we make it a global constant.
+ */
+static const char cr_char = '\r';
+
/* Channel info */
/* static */ volatile struct {
void *tty; /* Really a struct rtems_termios_tty * */
@@ -1366,12 +1375,11 @@ rtems_status_code do_poll_write(
{
rtems_libio_rw_args_t *rw_args = arg;
uint32_t i;
- char cr ='\r';
for( i = 0; i < rw_args->count; i++ ) {
_167Bug_pollWrite(minor, &(rw_args->buffer[i]), 1);
if ( rw_args->buffer[i] == '\n' )
- _167Bug_pollWrite(minor, &cr, 1);
+ _167Bug_pollWrite(minor, &cr_char, 1);
}
rw_args->bytes_moved = i;
return RTEMS_SUCCESSFUL;
@@ -1385,7 +1393,6 @@ rtems_status_code do_poll_write(
void _BSP_output_char(char c)
{
rtems_device_minor_number printk_minor;
- char cr ='\r';
/*
* Can't rely on console_initialize having been called before this function
@@ -1399,7 +1406,7 @@ void _BSP_output_char(char c)
_167Bug_pollWrite(printk_minor, &c, 1);
if ( c == '\n' )
- _167Bug_pollWrite(printk_minor, &cr, 1);
+ _167Bug_pollWrite(printk_minor, &cr_char, 1);
}
/*