53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * arch/arm/mach-sa1100/include/mach/uncompress.h
 | |
|  *
 | |
|  * (C) 1999 Nicolas Pitre <nico@fluxnic.net>
 | |
|  *
 | |
|  * Reorganised to be machine independent.
 | |
|  */
 | |
| 
 | |
| #include "hardware.h"
 | |
| 
 | |
| #define IOMEM(x)	(x)
 | |
| 
 | |
| /*
 | |
|  * The following code assumes the serial port has already been
 | |
|  * initialized by the bootloader.  We search for the first enabled
 | |
|  * port in the most probable order.  If you didn't setup a port in
 | |
|  * your bootloader then nothing will appear (which might be desired).
 | |
|  */
 | |
| 
 | |
| #define UART(x)		(*(volatile unsigned long *)(serial_port + (x)))
 | |
| 
 | |
| static inline void putc(int c)
 | |
| {
 | |
| 	unsigned long serial_port;
 | |
| 
 | |
| 	do {
 | |
| 		serial_port = _Ser3UTCR0;
 | |
| 		if (UART(UTCR3) & UTCR3_TXE) break;
 | |
| 		serial_port = _Ser1UTCR0;
 | |
| 		if (UART(UTCR3) & UTCR3_TXE) break;
 | |
| 		serial_port = _Ser2UTCR0;
 | |
| 		if (UART(UTCR3) & UTCR3_TXE) break;
 | |
| 		return;
 | |
| 	} while (0);
 | |
| 
 | |
| 	/* wait for space in the UART's transmitter */
 | |
| 	while (!(UART(UTSR1) & UTSR1_TNF))
 | |
| 		barrier();
 | |
| 
 | |
| 	/* send the character out. */
 | |
| 	UART(UTDR) = c;
 | |
| }
 | |
| 
 | |
| static inline void flush(void)
 | |
| {
 | |
| }
 | |
| 
 | |
| /*
 | |
|  * Nothing to do for these
 | |
|  */
 | |
| #define arch_decomp_setup()
 |