diff options
Diffstat (limited to 'arch/arm/boot/compressed')
| -rw-r--r-- | arch/arm/boot/compressed/head.S | 8 | ||||
| -rw-r--r-- | arch/arm/boot/compressed/misc.c | 13 |
2 files changed, 20 insertions, 1 deletions
diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index d356af7cef82..4fddc509e78e 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S | |||
| @@ -27,6 +27,14 @@ | |||
| 27 | .macro writeb, ch, rb | 27 | .macro writeb, ch, rb |
| 28 | mcr p14, 0, \ch, c0, c5, 0 | 28 | mcr p14, 0, \ch, c0, c5, 0 |
| 29 | .endm | 29 | .endm |
| 30 | #elif defined(CONFIG_CPU_V7) | ||
| 31 | .macro loadsp, rb | ||
| 32 | .endm | ||
| 33 | .macro writeb, ch, rb | ||
| 34 | wait: mrc p14, 0, pc, c0, c1, 0 | ||
| 35 | bcs wait | ||
| 36 | mcr p14, 0, \ch, c0, c5, 0 | ||
| 37 | .endm | ||
| 30 | #elif defined(CONFIG_CPU_XSCALE) | 38 | #elif defined(CONFIG_CPU_XSCALE) |
| 31 | .macro loadsp, rb | 39 | .macro loadsp, rb |
| 32 | .endm | 40 | .endm |
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c index 7e0fe4d42c7b..56a0d116d271 100644 --- a/arch/arm/boot/compressed/misc.c +++ b/arch/arm/boot/compressed/misc.c | |||
| @@ -53,6 +53,18 @@ static void icedcc_putc(int ch) | |||
| 53 | 53 | ||
| 54 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); | 54 | asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch)); |
| 55 | } | 55 | } |
| 56 | |||
| 57 | #elif defined(CONFIG_CPU_V7) | ||
| 58 | |||
| 59 | static void icedcc_putc(int ch) | ||
| 60 | { | ||
| 61 | asm( | ||
| 62 | "wait: mrc p14, 0, pc, c0, c1, 0 \n\ | ||
| 63 | bcs wait \n\ | ||
| 64 | mcr p14, 0, %0, c0, c5, 0 " | ||
| 65 | : : "r" (ch)); | ||
| 66 | } | ||
| 67 | |||
| 56 | #elif defined(CONFIG_CPU_XSCALE) | 68 | #elif defined(CONFIG_CPU_XSCALE) |
| 57 | 69 | ||
| 58 | static void icedcc_putc(int ch) | 70 | static void icedcc_putc(int ch) |
| @@ -88,7 +100,6 @@ static void icedcc_putc(int ch) | |||
| 88 | #endif | 100 | #endif |
| 89 | 101 | ||
| 90 | #define putc(ch) icedcc_putc(ch) | 102 | #define putc(ch) icedcc_putc(ch) |
| 91 | #define flush() do { } while (0) | ||
| 92 | #endif | 103 | #endif |
| 93 | 104 | ||
| 94 | static void putstr(const char *ptr) | 105 | static void putstr(const char *ptr) |
