1/* arch/arm/mach-imx/include/mach/debug-macro.S 2 * 3 * Debugging macro include header 4 * 5 * Copyright (C) 1994-1999 Russell King 6 * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 * 12 */ 13 14#include <asm/assembler.h> 15#include "imx-uart.h" 16 17/* 18 * FIXME: This is a copy of IMX_IO_P2V in hardware.h, and needs to 19 * stay sync with that. It's hard to maintain, and should be fixed 20 * globally for multi-platform build to use a fixed virtual address 21 * for low-level debug uart port across platforms. 22 */ 23#define IMX_IO_P2V(x) ( \ 24 (((x) & 0x80000000) >> 7) | \ 25 (0xf4000000 + \ 26 (((x) & 0x50000000) >> 6) + \ 27 (((x) & 0x0b000000) >> 4) + \ 28 (((x) & 0x000fffff)))) 29 30#define UART_VADDR IMX_IO_P2V(UART_PADDR) 31 32 .macro addruart, rp, rv, tmp 33 ldr \rp, =UART_PADDR @ physical 34 ldr \rv, =UART_VADDR @ virtual 35 .endm 36 37 .macro senduart,rd,rx 38 ARM_BE8(rev \rd, \rd) 39 str \rd, [\rx, #0x40] @ TXDATA 40 .endm 41 42 .macro waituart,rd,rx 43 .endm 44 45 .macro busyuart,rd,rx 461002: ldr \rd, [\rx, #0x98] @ SR2 47 ARM_BE8(rev \rd, \rd) 48 tst \rd, #1 << 3 @ TXDC 49 beq 1002b @ wait until transmit done 50 .endm 51