diff options
Diffstat (limited to 'i686/macros.s')
-rw-r--r-- | i686/macros.s | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/i686/macros.s b/i686/macros.s new file mode 100644 index 0000000..a9b8b4d --- /dev/null +++ b/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 + |