Support dynamic ARM_PERIIOBASE as requred by rpi2
[AROS.git] / arch / arm-raspi / kernel / kernel_debug.c
blob4d9b5411a7aa97d2885a3d135920ff7ca31da262
1 /*
2 Copyright � 2013-2015, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <aros/kernel.h>
7 #include <inttypes.h>
9 #include <hardware/bcm283x.h>
10 #include <hardware/pl011uart.h>
12 #include <kernel_base.h>
13 #include <kernel_debug.h>
15 #undef ARM_PERIIOBASE
16 extern uint32_t __arm_periiobase;
17 #define ARM_PERIIOBASE (__arm_periiobase)
19 void (*_KrnPutC)(char) = NULL;
21 inline void krnWaitSerOut()
23 while(1)
25 if ((*(volatile uint32_t *)(PL011_0_BASE + PL011_FR) & PL011_FR_TXFF) == 0) break;
30 inline void krnSerPutC(uint8_t chr)
32 krnWaitSerOut();
34 if (chr == '\n')
36 *(volatile uint32_t *)(PL011_0_BASE + PL011_DR) = '\r';
37 krnWaitSerOut();
39 *(volatile uint32_t *)(PL011_0_BASE + PL011_DR) = chr;
42 int krnPutC(int chr, struct KernelBase *KernelBase)
44 if (chr == 0x03)
45 _KrnPutC = NULL;
46 else
48 if (_KrnPutC)
49 _KrnPutC(chr);
51 krnSerPutC(chr);