diff options
| -rw-r--r-- | arch/sh/include/asm/system.h | 2 | ||||
| -rw-r--r-- | drivers/serial/serial_sh.c | 20 | ||||
| -rw-r--r-- | include/linux/byteorder/swab.h | 2 | 
3 files changed, 14 insertions, 10 deletions
| diff --git a/arch/sh/include/asm/system.h b/arch/sh/include/asm/system.h index 56fd77ace..24b5ce8e3 100644 --- a/arch/sh/include/asm/system.h +++ b/arch/sh/include/asm/system.h @@ -274,8 +274,8 @@ void enable_hlt(void);  static inline void trigger_address_error(void)  { +	set_bl_bit();  	__asm__ __volatile__ ( -		"ldc %0, sr\n\t"  		"mov.l @%1, %0"  		:  		: "r" (0x10000000), "r" (0x80000001) diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c index 3c931d021..ee1f2d768 100644 --- a/drivers/serial/serial_sh.c +++ b/drivers/serial/serial_sh.c @@ -117,6 +117,14 @@ static int serial_rx_fifo_level(void)  	return scif_rxfill(&sh_sci);  } +static void handle_error(void) +{ +	sci_in(&sh_sci, SCxSR); +	sci_out(&sh_sci, SCxSR, SCxSR_ERROR_CLEAR(&sh_sci)); +	sci_in(&sh_sci, SCLSR); +	sci_out(&sh_sci, SCLSR, 0x00); +} +  void serial_raw_putc(const char c)  {  	while (1) { @@ -138,16 +146,14 @@ static void sh_serial_putc(const char c)  static int sh_serial_tstc(void)  { +	if (sci_in(&sh_sci, SCxSR) & SCIF_ERRORS) { +		handle_error(); +		return 0; +	} +  	return serial_rx_fifo_level() ? 1 : 0;  } -void handle_error(void) -{ -	sci_in(&sh_sci, SCxSR); -	sci_out(&sh_sci, SCxSR, SCxSR_ERROR_CLEAR(&sh_sci)); -	sci_in(&sh_sci, SCLSR); -	sci_out(&sh_sci, SCLSR, 0x00); -}  int serial_getc_check(void)  { diff --git a/include/linux/byteorder/swab.h b/include/linux/byteorder/swab.h index bb4a04693..4334fa77e 100644 --- a/include/linux/byteorder/swab.h +++ b/include/linux/byteorder/swab.h @@ -122,7 +122,6 @@ static __inline__ void __swab32s(__u32 *addr)  	__arch__swab32s(addr);  } -#ifdef __BYTEORDER_HAS_U64__  static __inline__ __attribute__((const)) __u64 __fswab64(__u64 x)  {  #  ifdef __SWAB_64_THRU_32__ @@ -141,7 +140,6 @@ static __inline__ void __swab64s(__u64 *addr)  {  	__arch__swab64s(addr);  } -#endif /* __BYTEORDER_HAS_U64__ */  #if defined(__KERNEL__)  #define swab16 __swab16 |