summaryrefslogtreecommitdiff
path: root/kernel/usrbin
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/usrbin')
-rw-r--r--kernel/usrbin/Makefile17
-rw-r--r--kernel/usrbin/usrbin.binbin0 -> 76 bytes
-rw-r--r--kernel/usrbin/usrbin.s32
3 files changed, 49 insertions, 0 deletions
diff --git a/kernel/usrbin/Makefile b/kernel/usrbin/Makefile
new file mode 100644
index 0000000..dfd1b84
--- /dev/null
+++ b/kernel/usrbin/Makefile
@@ -0,0 +1,17 @@
+TARGET = usrbin.o
+
+ASM = nasm
+
+all: build
+
+build: $(TARGET)
+
+usrbin.bin: usrbin.s
+ $(ASM) -f bin -o usrbin.bin usrbin.s
+
+$(TARGET): usrbin.bin
+ objcopy -I binary -O elf32-i386 -B i386 usrbin.bin usrbin.o
+
+clean:
+ rm -f usrbin.bin
+ rm -f $(TARGET)
diff --git a/kernel/usrbin/usrbin.bin b/kernel/usrbin/usrbin.bin
new file mode 100644
index 0000000..a7d7730
--- /dev/null
+++ b/kernel/usrbin/usrbin.bin
Binary files differ
diff --git a/kernel/usrbin/usrbin.s b/kernel/usrbin/usrbin.s
new file mode 100644
index 0000000..91dd94a
--- /dev/null
+++ b/kernel/usrbin/usrbin.s
@@ -0,0 +1,32 @@
+bits 32
+org 0x100000
+
+main:
+ push .msg
+ call puts
+ add esp, 4
+.loop:
+ ; loop forever
+ jmp .loop
+.msg: db "Hello World from Userspace!", 0
+
+puts:
+ push ebp
+ mov ebp, esp
+ push esi
+ push edi
+ mov esi, [ebp+8]
+ mov edi, 0xB8000
+.loop:
+ lodsb
+ cmp al, 0
+ je .end
+ mov [edi], al
+ mov byte [edi+1], 0x07
+ add edi, 2
+ jmp .loop
+.end:
+ pop edi
+ pop esi
+ pop ebp
+ ret