23 #include <linux/types.h>
25 #include <asm/processor.h>
30 #define DCC_STATUS_RX (1 << 30)
31 #define DCC_STATUS_TX (1 << 29)
33 static inline u32 __dcc_getstatus(
void)
36 asm volatile(
"mrc p14, 0, %0, c0, c1, 0 @ read comms ctrl reg"
37 :
"=r" (__ret) : :
"cc");
43 static inline char __dcc_getchar(
void)
47 asm volatile(
"mrc p14, 0, %0, c0, c5, 0 @ read comms data reg"
54 static inline void __dcc_putchar(
char c)
56 asm volatile(
"mcr p14, 0, %0, c0, c5, 0 @ write a char"
66 for (i = 0; i <
count; i++) {
70 __dcc_putchar(buf[i]);
76 static int hvc_dcc_get_chars(
uint32_t vt,
char *buf,
int count)
80 for (i = 0; i <
count; ++
i)
82 buf[
i] = __dcc_getchar();
89 static const struct hv_ops hvc_dcc_get_put_ops = {
90 .get_chars = hvc_dcc_get_chars,
91 .put_chars = hvc_dcc_put_chars,
94 static int __init hvc_dcc_console_init(
void)
101 static int __init hvc_dcc_init(
void)
103 hvc_alloc(0, 0, &hvc_dcc_get_put_ops, 128);