From 4079049242204304306c9da80abc2bd6c1297de2 Mon Sep 17 00:00:00 2001 From: Tom-on64 Date: Sat, 26 Oct 2024 14:45:07 +0200 Subject: [PATCH] Fixed debugf(); OS now works, but immediatly triggers a Page Fault after printing a 'k' --- kern.img | Bin 1470464 -> 1470464 bytes libk/error/debug.c | 10 ++++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/kern.img b/kern.img index fa2b04df545b7a6d2d95651450e655e36e9e4a0d..1f5f9d16c71eceb5c73e1afc9606800c1419d45f 100644 GIT binary patch literal 1470464 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 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM f7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@1J{87e5H!0 delta 17519 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 ON^`8)RB1LhivJD|)*rwC diff --git a/libk/error/debug.c b/libk/error/debug.c index bf1cae3..4b6fd3e 100644 --- a/libk/error/debug.c +++ b/libk/error/debug.c @@ -1,12 +1,18 @@ #include #include +#include #include +static void _dbgPutc(char c, void* arg) { + (void)arg; + serialWrite(PORT_COM1, c); + if (c == '\n') { serialWrite(PORT_COM1, '\r'); } +} + int debugf(const char* fmt, ...) { va_list va; va_start(va, fmt); - serialPrint(PORT_COM1, fmt); // TODO: use a printf - int res = 0; + int res = vpprintf(_dbgPutc, NULL, fmt, va); va_end(va); return res; }