| /* linux/include/asm-arm/arch-iop3xx/debug-macro.S |
| * |
| * Debugging macro include header |
| * |
| * Copyright (C) 1994-1999 Russell King |
| * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| * |
| */ |
| |
| .macro addruart,rx |
| mov \rx, #0xfe000000 @ physical |
| #if defined(CONFIG_ARCH_IQ80321) || defined(CONFIG_ARCH_IQ31244) |
| orr \rx, \rx, #0x00800000 @ location of the UART |
| #elif defined(CONFIG_ARCH_IOP331) |
| mrc p15, 0, \rx, c1, c0 |
| tst \rx, #1 @ MMU enabled? |
| moveq \rx, #0x000fe000 @ Physical Base |
| movne \rx, #0 |
| orr \rx, \rx, #0xfe000000 |
| orr \rx, \rx, #0x00f00000 @ Virtual Base |
| orr \rx, \rx, #0x00001700 @ location of the UART |
| #else |
| #error Unknown IOP3XX implementation |
| #endif |
| .endm |
| |
| .macro senduart,rd,rx |
| strb \rd, [\rx] |
| .endm |
| |
| .macro busyuart,rd,rx |
| 1002: ldrb \rd, [\rx, #0x5] |
| and \rd, \rd, #0x60 |
| teq \rd, #0x60 |
| bne 1002b |
| .endm |
| |
| .macro waituart,rd,rx |
| #if !defined(CONFIG_ARCH_IQ80321) || !defined(CONFIG_ARCH_IQ31244) || !defined(CONFIG_ARCH_IQ80331) |
| 1001: ldrb \rd, [\rx, #0x6] |
| tst \rd, #0x10 |
| beq 1001b |
| #endif |
| .endm |