summaryrefslogtreecommitdiff
path: root/asm/copy_page_physical.asm
diff options
context:
space:
mode:
Diffstat (limited to 'asm/copy_page_physical.asm')
-rw-r--r--asm/copy_page_physical.asm33
1 files changed, 0 insertions, 33 deletions
diff --git a/asm/copy_page_physical.asm b/asm/copy_page_physical.asm
deleted file mode 100644
index f8d3af1..0000000
--- a/asm/copy_page_physical.asm
+++ /dev/null
@@ -1,33 +0,0 @@
-[bits 32]
-
-global copy_page_physical
-copy_page_physical:
- push ebx ; According to __cdecl, we must preserve the contents of EBX.
- pushf ; push EFLAGS, so we can pop it and reenable interrupts
- ; later, if they were enabled anyway.
- cli ; Disable interrupts, so we aren't interrupted.
- ; Load these in BEFORE we disable paging!
- mov ebx, [esp+12] ; Source address
- mov ecx, [esp+16] ; Destination address
-
- mov edx, cr0 ; Get the control register...
- and edx, 0x7fffffff ; and...
- mov cr0, edx ; Disable paging.
-
- mov edx, 1024 ; 1024*4bytes = 4096 bytes to copy
-
-.loop:
- mov eax, [ebx] ; Get the word at the source address
- mov [ecx], eax ; Store it at the dest address
- add ebx, 4 ; Source address += sizeof(word)
- add ecx, 4 ; Dest address += sizeof(word)
- dec edx ; One less word to do
- jnz .loop
-
- mov edx, cr0 ; Get the control register again
- or edx, 0x80000000 ; and...
- mov cr0, edx ; Enable paging.
-
- popf ; Pop EFLAGS back.
- pop ebx ; Get the original value of EBX back.
- ret