shutdown code now correctly handles >128 Kb file kernel.mnt

git-svn-id: svn://kolibrios.org@681 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Evgeny Grechnikov (Diamond) 2007-12-13 18:45:44 +00:00
parent d59aaca0fa
commit a3ee7f3740
2 changed files with 19 additions and 13 deletions

View File

@ -233,19 +233,25 @@ restart_kernel_4000:
cli cli
push ds push ds
pop es pop es
mov cx, 0x8000 mov cx, 0x8000
push cx push cx
mov ds, cx push 0x7000
xor si, si pop ds
xor di, di xor si, si
rep movsw xor di, di
push 0x9000 rep movsw
pop ds pop cx
mov ds, cx
push 0x2000 push 0x2000
pop es pop es
pop cx rep movsw
rep movsw push 0x9000
pop ds
push 0x3000
pop es
mov cx, 0xE000/2
rep movsw
wbinvd ; write and invalidate cache wbinvd ; write and invalidate cache

View File

@ -5203,12 +5203,12 @@ system_shutdown: ; shut down the system
yes_shutdown_param: yes_shutdown_param:
cli cli
mov eax, kernel_file ; load kernel.mnt to 0x8000:0 mov eax, kernel_file ; load kernel.mnt to 0x7000:0
push 12 push 12
pop esi pop esi
xor ebx,ebx xor ebx,ebx
or ecx,-1 or ecx,-1
mov edx, OS_BASE+0x80000 mov edx, OS_BASE+0x70000
call fileread call fileread
mov esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0 mov esi, restart_kernel_4000+OS_BASE+0x10000 ; move kernel re-starter to 0x4000:0