1 /* 2 * linux/arch/unicore32/include/mach/ocd.h 3 * 4 * Code specific to PKUnity SoC and UniCore ISA 5 * 6 * Copyright (C) 2001-2010 GUAN Xue-tao 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 #ifndef __MACH_PUV3_OCD_H__ 14 #define __MACH_PUV3_OCD_H__ 15 16 #if defined(CONFIG_DEBUG_OCD) ocd_putc(unsigned int c)17static inline void ocd_putc(unsigned int c) 18 { 19 int status, i = 0x2000000; 20 21 do { 22 if (--i < 0) 23 return; 24 25 asm volatile ("movc %0, p1.c0, #0" : "=r" (status)); 26 } while (status & 2); 27 28 asm("movc p1.c1, %0, #1" : : "r" (c)); 29 } 30 31 #define putc(ch) ocd_putc(ch) 32 #else 33 #define putc(ch) 34 #endif 35 36 #endif 37