summaryrefslogtreecommitdiff
path: root/kernel/serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/serial.c')
-rw-r--r--kernel/serial.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/kernel/serial.c b/kernel/serial.c
index 7f23298..86bbd87 100644
--- a/kernel/serial.c
+++ b/kernel/serial.c
@@ -15,10 +15,20 @@
#define RSMODEMS (RSBASE + 6)
#define RSSCRATCH (RSBASE + 7)
-static int rsputs(char *s) {
+#define rswait()\
+ while((inb(RSLINES) & 0x20) == 0);
+
+int rsputs(char *s) {
while(*s) {
- while((inb(RSLINES) & 0x20) == 0);
- outb(RSDATA, *s++);
+ rswait();
+ if(*s == '\n') {
+ outb(RSDATA, '\n');
+ rswait();
+ outb(RSDATA, '\r');
+ s++;
+ } else {
+ outb(RSDATA, *s++);
+ }
}
return 0;
@@ -46,7 +56,3 @@ void serial_init(void) {
rsputs("[kernel] Serial monitor initialized!\n\r");
printk("[rs] Serial port COM0 initialized!\n");
}
-
-int sys_rsputs(char *s) {
- return rsputs(s);
-}