diff options
Diffstat (limited to 'util/romcc/tests/simple_test15.c')
-rw-r--r-- | util/romcc/tests/simple_test15.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/util/romcc/tests/simple_test15.c b/util/romcc/tests/simple_test15.c new file mode 100644 index 0000000000..d02eaefd35 --- /dev/null +++ b/util/romcc/tests/simple_test15.c @@ -0,0 +1,47 @@ +static void outb(unsigned char value, unsigned short port) +{ + __builtin_outb(value, port); +} + +static unsigned char inb(unsigned short port) +{ + return __builtin_inb(port); +} +static int uart_can_tx_byte(void) +{ + return inb(0x3f8 + 0x05) & 0x20; +} + +static void uart_wait_to_tx_byte(void) +{ + while(!uart_can_tx_byte()) + ; +} + +static void uart_wait_until_sent(void) +{ + while(!(inb(0x3f8 + 0x05) & 0x40)) + ; +} + +static void uart_tx_byte(unsigned char data) +{ + uart_wait_to_tx_byte(); + outb(data, 0x3f8 + 0x00); + + uart_wait_until_sent(); +} + +static void print_debug(const char *str) +{ + unsigned char ch; + while((ch = *str++) != '\0') { + uart_tx_byte(ch); + } +} + +static void main(void) +{ + print_debug("one\r\n"); + print_debug("two\r\n"); +} |