diff options
Diffstat (limited to 'arch/arm/boot/compressed/misc.c')
-rw-r--r-- | arch/arm/boot/compressed/misc.c | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 3fc08413fff0..9e6e512f0117 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
@@ -18,7 +18,10 @@ | |||
18 | 18 | ||
19 | unsigned int __machine_arch_type; | 19 | unsigned int __machine_arch_type; |
20 | 20 | ||
21 | #include <linux/string.h> | 21 | #include <linux/compiler.h> /* for inline */ |
22 | #include <linux/types.h> /* for size_t */ | ||
23 | #include <linux/stddef.h> /* for NULL */ | ||
24 | #include <asm/string.h> | ||
22 | 25 | ||
23 | #ifdef STANDALONE_DEBUG | 26 | #ifdef STANDALONE_DEBUG |
24 | #define putstr printf | 27 | #define putstr printf |
@@ -46,6 +49,21 @@ static void icedcc_putc(int ch) | |||
46 | 49 | ||
47 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); | 50 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); |
48 | } | 51 | } |
52 | #elif defined(CONFIG_CPU_XSCALE) | ||
53 | |||
54 | static void icedcc_putc(int ch) | ||
55 | { | ||
56 | int status, i = 0x4000000; | ||
57 | |||
58 | do { | ||
59 | if (--i < 0) | ||
60 | return; | ||
61 | |||
62 | asm volatile ("mrc p14, 0, %0, c14, c0, 0" : "=r" (status)); | ||
63 | } while (status & (1 << 28)); | ||
64 | |||
65 | asm("mcr p14, 0, %0, c8, c0, 0" : : "r" (ch)); | ||
66 | } | ||
49 | 67 | ||
50 | #else | 68 | #else |
51 | 69 | ||