Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:users:jcmvbkbc:xtensa-linux

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
etc:users:jcmvbkbc:xtensa-linux [2011/06/24 22:58] jcmvbkbcetc:users:jcmvbkbc:xtensa-linux [2016/08/08 20:53] (current) – ↷ Page moved from users:jcmvbkbc:xtensa-linux to etc:users:jcmvbkbc:xtensa-linux kel
Line 120: Line 120:
         retw                            # rotate back by 4 registers, possibly with underflow         retw                            # rotate back by 4 registers, possibly with underflow
                                         # Back out our _entry Frame above...                                         # Back out our _entry Frame above...
 +</code>
 +
 +
 +==== Random symbols appear like being typed on the console ====
 +There's no checks for select simcall error status (or maybe there just should not be EINTR error, that's just not documented). Fix is the following:
 +
 +<code>
 +diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/iss/console.c
 +index e650152..285744e 100644
 +--- a/arch/xtensa/platforms/iss/console.c
 ++++ b/arch/xtensa/platforms/iss/console.c
 +@@ -126,10 +126,11 @@ static void rs_poll(unsigned long priv)
 + 
 +        spin_lock(&timer_lock);
 + 
 +-       while (__simc(SYS_select_one, 0, XTISS_SELECT_ONE_READ, (int)&tv,0,0)){
 +-               __simc (SYS_read, 0, (unsigned long)&c, 1, 0, 0);
 +-               tty_insert_flip_char(tty, c, TTY_NORMAL);
 +-               i++;
 ++       while (__simc(SYS_select_one, 0, XTISS_SELECT_ONE_READ, (int)&tv,0,0) > 0) {
 ++               if (__simc (SYS_read, 0, (unsigned long)&c, 1, 0, 0) == 1) {
 ++                       tty_insert_flip_char(tty, c, TTY_NORMAL);
 ++                       i++;
 ++               }
 +        }
 + 
 +        if (i)
 +</code>
 +
 +==== Console is tooooo slooooow ====
 +There's polling timer, it's 20 seconds :(). Fix is the following:
 +
 +<code>
 +diff --git a/arch/xtensa/platforms/iss/console.c b/arch/xtensa/platforms/iss/console.c
 +index e650152..285744e 100644
 +--- a/arch/xtensa/platforms/iss/console.c
 ++++ b/arch/xtensa/platforms/iss/console.c
 +@@ -35,7 +35,7 @@
 + #endif
 + 
 + #define SERIAL_MAX_NUM_LINES 1
 +-#define SERIAL_TIMER_VALUE (20 * HZ)
 ++#define SERIAL_TIMER_VALUE (HZ / 10)
 + 
 + static struct tty_driver *serial_driver;
 + static struct timer_list serial_timer;
 </code> </code>
etc/users/jcmvbkbc/xtensa-linux.1308941930.txt.gz · Last modified: 2011/06/24 22:58 by jcmvbkbc