From 80aca5ee8a3c9c9a4c10bbb11140c0b11a345184 Mon Sep 17 00:00:00 2001 From: d0p1 Date: Mon, 8 Jul 2024 19:20:24 +0200 Subject: [PATCH] chore: kernel module ? --- kernel/pic.inc | 10 ++++++++++ kernel/sys/coff.inc | 10 ++++++++++ modules/Makefile | 2 +- modules/dummy/dummy.asm | 19 +++++++++++++++++++ modules/module.inc | 25 +++++++++++++++++++++++++ 5 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 kernel/pic.inc create mode 100644 kernel/sys/coff.inc create mode 100644 modules/module.inc diff --git a/kernel/pic.inc b/kernel/pic.inc new file mode 100644 index 0000000..231041d --- /dev/null +++ b/kernel/pic.inc @@ -0,0 +1,10 @@ +PIC1_COMMAND = 0x20 +PIC1_DATA = 0x21 +PIC2_COMMAND = 0xA0 +PIC2_DATA = 0xA1 + +PIC_EOI = 0x20 + +pic_init: + ret + diff --git a/kernel/sys/coff.inc b/kernel/sys/coff.inc new file mode 100644 index 0000000..d9988ec --- /dev/null +++ b/kernel/sys/coff.inc @@ -0,0 +1,10 @@ +struc COFFFileHdr { + .f_magic dw ? + .f_nscns dw ? + .f_timdat dd ? + .f_symptr dd ? + .f_nsyms dd ? + .f_opthdr dw ? + .f_flags dw ? +} + diff --git a/modules/Makefile b/modules/Makefile index ad53768..0399a2f 100644 --- a/modules/Makefile +++ b/modules/Makefile @@ -4,7 +4,7 @@ SUBDIRS = dummy .PHONY: $(SUBDIRS) $(SUBDIRS): - @echo "📁 boot/$@" + @echo "📁 modules/$@" @DESTDIR=$(DESTDIR) $(MAKE) -C $@ $(MAKECMDGOALS) .PHONY: $(TOPGOALS) diff --git a/modules/dummy/dummy.asm b/modules/dummy/dummy.asm index 56b2dfb..a7063ee 100644 --- a/modules/dummy/dummy.asm +++ b/modules/dummy/dummy.asm @@ -1,2 +1,21 @@ format COFF + use32 + include '../module.inc' + + section '.text' code + + public module_init +module_init: + ret + + public module_exit +module_exit: + ret + +MODULE_INFO_BEGIN + +MODULE_AUTHOR "d0p1" +MODULE_DESCRIPTION "Dummy module" +MODULE_LICENSE "BSD-3-Clause" +MODULE_VERSION "1.0" diff --git a/modules/module.inc b/modules/module.inc new file mode 100644 index 0000000..e434f2b --- /dev/null +++ b/modules/module.inc @@ -0,0 +1,25 @@ +macro MODULE_INFO_BEGIN { + section '.modinfo' data +} + +macro MODULE_INFO tag,value { + public module_#tag +module_#tag db `value#, 0 + +} + +macro MODULE_AUTHOR value { + MODULE_INFO author, value +} + +macro MODULE_VERSION value { + MODULE_INFO version, value +} + +macro MODULE_LICENSE value { + MODULE_INFO license, value +} + +macro MODULE_DESCRIPTION value { + MODULE_INFO description, value +}