]> git.corax.cc Git - corax/commitdiff
Add sys_inb() and sys_outb() syscalls
authorMatthias Kruk <m@m10k.eu>
Mon, 23 Dec 2019 07:32:39 +0000 (16:32 +0900)
committerMatthias Kruk <m@m10k.eu>
Mon, 23 Dec 2019 07:32:39 +0000 (16:32 +0900)
include/corax/syscall.h
kernel/core/posixcall.c

index ca456c2a95ac6eb32a45fa644d52807fb8f4ad10..07b64cd8da67b650f3a13dd4db1577d5c247750a 100644 (file)
@@ -27,6 +27,9 @@
 #define SYS_MMAP       9
 #define SYS_MUNMAP     10
 
+#define SYS_INB        11
+#define SYS_OUTB       12
+
 /* Corax-specific variations of POSIX syscalls */
 #define SYS_EXECFVE    128
 
index 25ff84122aeea9fd07ecab75318f11fca9f42022..3cbb141a8be8340ca9c2651b9968dd48cabcfa15 100644 (file)
@@ -394,6 +394,18 @@ int sys_mmap(stack_frame_t *stk)
        return(ret_val);
 }
 
+int sys_inb(stack_frame_t *stk)
+{
+       stk->eax = io_inb((u16_t)stk->ebx);
+       return(0);
+}
+
+int sys_outb(stack_frame_t *stk)
+{
+       stk->eax = io_outb((u16_t)stk->ebx, (u8_t)stk->ecx);
+       return(0);
+}
+
 int sys_posixcall(stack_frame_t *stk)
 {
        int ret_val;
@@ -454,6 +466,14 @@ int sys_posixcall(stack_frame_t *stk)
                ret_val = -ENOSYS;
                break;
 
+       case SYS_INB:
+               ret_val = sys_inb(stk);
+               break;
+
+       case SYS_OUTB:
+               ret_val = sys_outb(stk);
+               break;
+
        default:
                ret_val = -EOPNOTSUPP;
                break;