summaryrefslogtreecommitdiff
path: root/kernel/process.s
blob: 24e18696a3f43f480fb22571744d98565386b22a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.intel_syntax noprefix
.global copy_page_physical
.global loop_m
copy_page_physical:
   push ebx              
   pushf                 
                        
   cli                 
                      
   mov ebx, [esp+12] 
   mov ecx, [esp+16]

   mov edx, cr0        
   and edx, 0x7fffffff
   mov cr0, edx      

   mov edx, 1024    

.loop:
   mov eax, [ebx]  
   mov [ecx], eax 
   add ebx, 4    
   add ecx, 4   
   dec edx     
   jnz .loop

   mov edx, cr0 
   or  edx, 0x80000000 
   mov cr0, edx       

   popf              
   pop ebx          
   ret