diff options
Diffstat (limited to 'cpu')
-rw-r--r-- | cpu/mpc8xx/serial.c | 33 | ||||
-rw-r--r-- | cpu/mpc8xx/start.S | 2 |
2 files changed, 16 insertions, 19 deletions
diff --git a/cpu/mpc8xx/serial.c b/cpu/mpc8xx/serial.c index 0690300..2871084 100644 --- a/cpu/mpc8xx/serial.c +++ b/cpu/mpc8xx/serial.c @@ -24,6 +24,7 @@ #include <common.h> #include <commproc.h> #include <command.h> +#include <watchdog.h> #if !defined(CONFIG_8xx_CONS_NONE) /* No Console at all */ @@ -265,20 +266,16 @@ serial_putc(const char c) */ buf = (char *)tbdf->cbd_bufaddr; -#if 0 - __asm__("eieio"); - while (tbdf->cbd_sc & BD_SC_READY) - __asm__("eieio"); -#endif *buf = c; tbdf->cbd_datlen = 1; tbdf->cbd_sc |= BD_SC_READY; __asm__("eieio"); -#if 1 - while (tbdf->cbd_sc & BD_SC_READY) + + while (tbdf->cbd_sc & BD_SC_READY) { + WATCHDOG_RESET (); __asm__("eieio"); -#endif + } } int @@ -298,8 +295,10 @@ serial_getc(void) /* Wait for character to show up. */ buf = (unsigned char *)rbdf->cbd_bufaddr; + while (rbdf->cbd_sc & BD_SC_EMPTY) - ; + WATCHDOG_RESET (); + c = *buf; rbdf->cbd_sc |= BD_SC_EMPTY; @@ -524,20 +523,16 @@ serial_putc(const char c) */ buf = (char *)tbdf->cbd_bufaddr; -#if 0 - __asm__("eieio"); - while (tbdf->cbd_sc & BD_SC_READY) - __asm__("eieio"); -#endif *buf = c; tbdf->cbd_datlen = 1; tbdf->cbd_sc |= BD_SC_READY; __asm__("eieio"); -#if 1 - while (tbdf->cbd_sc & BD_SC_READY) + + while (tbdf->cbd_sc & BD_SC_READY) { __asm__("eieio"); -#endif + WATCHDOG_RESET (); + } } int @@ -557,8 +552,10 @@ serial_getc(void) /* Wait for character to show up. */ buf = (unsigned char *)rbdf->cbd_bufaddr; + while (rbdf->cbd_sc & BD_SC_EMPTY) - ; + WATCHDOG_RESET (); + c = *buf; rbdf->cbd_sc |= BD_SC_EMPTY; diff --git a/cpu/mpc8xx/start.S b/cpu/mpc8xx/start.S index a1b7eff..213c9a9 100644 --- a/cpu/mpc8xx/start.S +++ b/cpu/mpc8xx/start.S @@ -583,7 +583,7 @@ relocate_code: /* First our own GOT */ add r14, r14, r15 - /* the the one used by the C code */ + /* then the one used by the C code */ add r30, r30, r15 /* |