#include <xdev.h> #include <xdev/debug.h> #include <xdev/ipc.h> #include <xdev/mm.h> #include <libc.h> #if DEBUG mutex_t mtx_kprintf = MTX_INIT(MTX_KIND_DEFAULT, NULL); int kprintf(int flags, const char *fmt, ...) { KASSERT(flags < 16); char buf[1024] = {0}; va_list args; va_start(args, fmt); int out = vsprintf(buf, fmt, args); mutex_lock(&mtx_kprintf); int i; for(i = 0; i < out; i++) debug_send(buf[i], flags); mutex_unlock(&mtx_kprintf);
#include <xdev.h> #include <xdev/mmio.h> #include <xdev/ipc.h> #include <xdev/debug.h> #include <libc.h> #include "arm.h" mutex_t serial_lock = MTX_INIT(MTX_KIND_DEFAULT); int serial_init() { mmio_w32(UART_CR(UART0), 0); mmio_w32(GPPUD, 0); delay(150); mmio_w32(GPPUDCLK0, (1 << 14) | (1 << 15)); delay(150); mmio_w32(GPPUDCLK0, (0)); mmio_w32(UART_ICR(UART0), 0x7FF); mmio_w32(UART_IBRD(UART0), 1); mmio_w32(UART_FBRD(UART0), 40); mmio_w32(UART_LCRH(UART0), (1 << 4) | (1 << 5) | (1 << 6)); mmio_w32(UART_IMSC(UART0), (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10));
#include <xdev.h> #include <xdev/ipc.h> #include <xdev/debug.h> #include <arch/i386/i386.h> #if DEBUG mutex_t mtx_debug = MTX_INIT(MTX_KIND_DEFAULT, NULL); static char __cga_colors[] = { 7, 14, 15, 12, 11 }; #define VGA_WIDTH 80 #define VGA_HEIGHT 25 void debug_send(char value, int flags) { mutex_lock(&mtx_debug); static int p = 0; static short* tm = (short*) 0xb8000; static int initialized = 0; if(!initialized) { initialized = 1;