Load kernel and call it
Posted: Thu Oct 09, 2014 7:53 am
Hello,
I loaded kernel.bin from disk with ext2 with:
My kernel.bin is simple:
Now i'm jumping to protected mode and trying to call from there with:
After this virtual machine crashes with:
I loaded kernel.bin from disk with ext2 with:
Code: Select all
mov bx, buffer
mov byte [DAP.count], 0x12
mov word [DAP.offset], 0x10000
mov word [DAP.segment], 0x0
mov dword [DAP.lba], esi
xor esi, esi
xor eax, eax
mov si, DAP
mov ah, 0x42
mov dl, 0x80
int 0x13
Code: Select all
void kmain(){
unsigned char *vidmem = (unsigned char*) 0x00B8000;
*vidmem++ = 'K';
}
Code: Select all
kmain
Code: Select all
call 0x10000
Code: Select all
qemu: fatal: Trying to execute code outside RAM or ROM at 0x00000000000a0000
EAX=00000000 EBX=0000fcd5 ECX=00000007 EDX=00000080
ESI=00007e97 EDI=00000000 EBP=00007bf8 ESP=00007bf8
EIP=0009ffba EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT= 00007eae 0000001f
IDT= 00000000 000003ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000004 CCO=ADDB
EFER=0000000000000000
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000 XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000 XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000 XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000 XMM07=00000000000000000000000000000000
Aborted (core dumped)