diff options
author | Max Filippov <jcmvbkbc@gmail.com> | 2012-10-15 01:55:33 +0200 |
---|---|---|
committer | Chris Zankel <chris@zankel.net> | 2012-10-16 06:39:20 +0200 |
commit | c88d8df0cc69fe0238f2c805a87cc67fb27a43fe (patch) | |
tree | 37af3c6aab48c8e20c7c67cfc7558c75b45bd846 /arch/xtensa/platforms | |
parent | xtensa: ISS: fix specific simcalls (diff) | |
download | linux-c88d8df0cc69fe0238f2c805a87cc67fb27a43fe.tar.xz linux-c88d8df0cc69fe0238f2c805a87cc67fb27a43fe.zip |
xtensa: ISS: fix rs_put_char
ISS serial console prints garbage instead of symbols printed via
rs_put_char. gcc optimizes away putting prined symbol into memory buffer
because there's no evidence that the buffer is used afterwards.
Make rs_put_char and rs_write use simc_write that has explicit wmb.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Chris Zankel <chris@zankel.net>
Diffstat (limited to 'arch/xtensa/platforms')
-rw-r--r-- | arch/xtensa/platforms/iss/console.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/iss/console.c index 8ab47edd7c82..7e74895eee04 100644 --- a/arch/xtensa/platforms/iss/console.c +++ b/arch/xtensa/platforms/iss/console.c @@ -91,7 +91,7 @@ static int rs_write(struct tty_struct * tty, { /* see drivers/char/serialX.c to reference original version */ - __simc (SYS_write, 1, (unsigned long)buf, count, 0, 0); + simc_write(1, buf, count); return count; } @@ -122,12 +122,7 @@ static void rs_poll(unsigned long priv) static int rs_put_char(struct tty_struct *tty, unsigned char ch) { - char buf[2]; - - buf[0] = ch; - buf[1] = '\0'; /* Is this NULL necessary? */ - __simc (SYS_write, 1, (unsigned long) buf, 1, 0, 0); - return 1; + return rs_write(tty, &ch, 1); } static void rs_flush_chars(struct tty_struct *tty) |