summaryrefslogtreecommitdiff
path: root/contrib/libdcc/dcc_stdio.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libdcc/dcc_stdio.c')
-rw-r--r--contrib/libdcc/dcc_stdio.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/contrib/libdcc/dcc_stdio.c b/contrib/libdcc/dcc_stdio.c
index 3d8dfc71..1a7eef40 100644
--- a/contrib/libdcc/dcc_stdio.c
+++ b/contrib/libdcc/dcc_stdio.c
@@ -32,24 +32,24 @@
* DCRDR[23:16] is used for by host for status
* DCRDR[31:24] is used for by host for write buffer */
-#define NVIC_DBG_DATA_R (*((volatile unsigned short *)0xE000EDF8))
+#define NVIC_DBG_DATA_R (*((volatile unsigned short *)0xE000EDF8))
-#define TARGET_REQ_TRACEMSG 0x00
-#define TARGET_REQ_DEBUGMSG_ASCII 0x01
-#define TARGET_REQ_DEBUGMSG_HEXMSG(size) (0x01 | ((size & 0xff) << 8))
-#define TARGET_REQ_DEBUGCHAR 0x02
+#define TARGET_REQ_TRACEMSG 0x00
+#define TARGET_REQ_DEBUGMSG_ASCII 0x01
+#define TARGET_REQ_DEBUGMSG_HEXMSG(size) (0x01 | ((size & 0xff) << 8))
+#define TARGET_REQ_DEBUGCHAR 0x02
#define BUSY 1
void dbg_write(unsigned long dcc_data)
{
int len = 4;
-
+
while (len--)
{
/* wait for data ready */
while (NVIC_DBG_DATA_R & BUSY);
-
+
/* write our data and set write flag - tell host there is data*/
NVIC_DBG_DATA_R = (unsigned short)(((dcc_data & 0xff) << 8) | BUSY);
dcc_data >>= 8;
@@ -57,15 +57,15 @@ void dbg_write(unsigned long dcc_data)
}
#elif defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_5TE__)
-
+
void dbg_write(unsigned long dcc_data)
{
unsigned long dcc_status;
-
+
do {
asm volatile("mrc p14, 0, %0, c0, c0" : "=r" (dcc_status));
} while (dcc_status & 0x2);
-
+
asm volatile("mcr p14, 0, %0, c1, c0" : : "r" (dcc_data));
}
@@ -74,18 +74,18 @@ void dbg_write(unsigned long dcc_data)
#endif
void dbg_trace_point(unsigned long number)
-{
+{
dbg_write(TARGET_REQ_TRACEMSG | (number << 8));
}
void dbg_write_u32(const unsigned long *val, long len)
-{
+{
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(4) | ((len & 0xffff) << 16));
while (len > 0)
{
dbg_write(*val);
-
+
val++;
len--;
}
@@ -94,23 +94,23 @@ void dbg_write_u32(const unsigned long *val, long len)
void dbg_write_u16(const unsigned short *val, long len)
{
unsigned long dcc_data;
-
+
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(2) | ((len & 0xffff) << 16));
while (len > 0)
{
dcc_data = val[0]
| ((len > 1) ? val[1] << 16: 0x0000);
-
+
dbg_write(dcc_data);
-
+
val += 2;
len -= 2;
}
}
void dbg_write_u8(const unsigned char *val, long len)
-{
+{
unsigned long dcc_data;
dbg_write(TARGET_REQ_DEBUGMSG_HEXMSG(1) | ((len & 0xffff) << 16));
@@ -121,9 +121,9 @@ void dbg_write_u8(const unsigned char *val, long len)
| ((len > 1) ? val[1] << 8 : 0x00)
| ((len > 2) ? val[2] << 16 : 0x00)
| ((len > 3) ? val[3] << 24 : 0x00);
-
+
dbg_write(dcc_data);
-
+
val += 4;
len -= 4;
}
@@ -133,11 +133,11 @@ void dbg_write_str(const char *msg)
{
long len;
unsigned long dcc_data;
-
+
for (len = 0; msg[len] && (len < 65536); len++);
-
+
dbg_write(TARGET_REQ_DEBUGMSG_ASCII | ((len & 0xffff) << 16));
-
+
while (len > 0)
{
dcc_data = msg[0]
@@ -152,6 +152,6 @@ void dbg_write_str(const char *msg)
}
void dbg_write_char(char msg)
-{
+{
dbg_write(TARGET_REQ_DEBUGCHAR | ((msg & 0xff) << 16));
}