SSE-moves

git-svn-id: svn://kolibrios.org@3195 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Artem Jerdev (art_zh) 2013-01-23 00:06:59 +00:00
parent b1147c3be7
commit 3fef9a66b5

View File

@ -18,15 +18,25 @@ preinit_mem:
; clear [CLEAN_ZONE..HEAP_BASE]
xor eax,eax
mov edi,CLEAN_ZONE ; 0x280000 = ramdisk FAT ?
mov ecx,(HEAP_BASE-OS_BASE-CLEAN_ZONE) / 4
cld
rep stosd
movd xmm0, eax ; load 128-bit Zero
; clear [0x40000..0x90000]
mov edi,CLEAN_ZONE ; 0x280000 = ramdisk FAT ?
; mov ecx,(HEAP_BASE-OS_BASE-CLEAN_ZONE) / 16
cld
.1:
movups [edi],xmm0
add edi, 16
cmp edi, (HEAP_BASE-OS_BASE)
jb .1
; clear [0x50000..0x90000]
mov edi,0x50000 ; 0x50000 is somewhere inside kernel code?
mov ecx,(0x90000-0x50000)/4
rep stosd
.2:
movups [edi],xmm0
add edi, 16
cmp edi, 0x90000
jb .2
; clear undefined kernel globals
mov edi, endofcode-OS_BASE
@ -149,7 +159,7 @@ init_page_map:
mov edi, sys_pgmap-OS_BASE
mov ebx, ecx
shr ecx, 5 ; 32 pagebits per dw
shr ecx, 5 ; 32 pagebits per dw
xor eax, eax
rep stosd