From edf9e71e2a7b6b89775c29cf28c19c6b89992c25 Mon Sep 17 00:00:00 2001 From: aqua Date: Mon, 28 Mar 2022 20:03:38 +0300 Subject: Initial commit x86 kernel that prints a hello world message to com1 --- arch/i686/macros.s | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 arch/i686/macros.s (limited to 'arch/i686/macros.s') diff --git a/arch/i686/macros.s b/arch/i686/macros.s new file mode 100644 index 0000000..a9b8b4d --- /dev/null +++ b/arch/i686/macros.s @@ -0,0 +1,25 @@ +.set PAGE_RO, 0x001 +.set PAGE_RW, 0x003 +/* write section to page table macro + * + * Registers used: + * %ecx: loop counter [ set to $1024 ] + * %edx: temporary + * %esi: current page being mapped + * %edi: page entry [ set to $page_addr ] + */ +.macro mmap_section begin, end, access + mov $\begin, %esi # from $begin +1: cmpl $\end, %esi # until $end + jge 2f + + movl %esi, %edx + orl $\access, %edx + movl %edx, (%edi) + + addl $4096, %esi # move to next page + addl $4, %edi # size of page entry is 4 bytes + loop 1b # loop according to %ecx +2: +.endm + -- cgit v1.2.1