diff options
author | sshwarts <sshwarts> | 2009-01-10 10:50:07 +0000 |
---|---|---|
committer | sshwarts <sshwarts> | 2009-01-10 10:50:07 +0000 |
commit | b177c9a9ce68928e1b7f646e7330b483649ba777 (patch) | |
tree | 4a13f94e4b05235c160c4163f98c88e6476e3e40 /kvm | |
parent | - run acpi-dsdt.dsl through cpp before compiling with iasl (to support #ifdef... (diff) | |
download | qemu-kvm-b177c9a9ce68928e1b7f646e7330b483649ba777.tar.gz qemu-kvm-b177c9a9ce68928e1b7f646e7330b483649ba777.tar.bz2 qemu-kvm-b177c9a9ce68928e1b7f646e7330b483649ba777.zip |
Deduplicate INT 15h, AX=E820h code by removing some identical parts.
- Sebastian
Diffstat (limited to 'kvm')
-rw-r--r-- | kvm/bios/rombios.c | 33 |
1 files changed, 5 insertions, 28 deletions
diff --git a/kvm/bios/rombios.c b/kvm/bios/rombios.c index 11095c6b0..ee46e42bf 100644 --- a/kvm/bios/rombios.c +++ b/kvm/bios/rombios.c @@ -4562,28 +4562,16 @@ ASM_END set_e820_range(ES, regs.u.r16.di, 0x0000000L, 0x0009f000L, 0, 0, 1); regs.u.r32.ebx = 1; - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; break; case 1: set_e820_range(ES, regs.u.r16.di, 0x0009f000L, 0x000a0000L, 0, 0, 2); regs.u.r32.ebx = 2; - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; break; case 2: set_e820_range(ES, regs.u.r16.di, 0x000e8000L, 0x00100000L, 0, 0, 2); regs.u.r32.ebx = 3; - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; break; case 3: #if BX_ROMBIOS32 @@ -4597,20 +4585,12 @@ ASM_END extended_memory_size, 1); regs.u.r32.ebx = 5; #endif - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; break; case 4: set_e820_range(ES, regs.u.r16.di, extended_memory_size - ACPI_DATA_SIZE, extended_memory_size ,0, 0, 3); // ACPI RAM regs.u.r32.ebx = 5; - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; break; case 5: /* 256KB BIOS area at the end of 4 GB */ @@ -4620,24 +4600,21 @@ ASM_END regs.u.r32.ebx = 6; else regs.u.r32.ebx = 0; - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; + break; case 6: /* Maping of memory above 4 GB */ set_e820_range(ES, regs.u.r16.di, 0x00000000L, extra_lowbits_memory_size, 1, extra_highbits_memory_size + 1, 1); regs.u.r32.ebx = 0; - regs.u.r32.eax = 0x534D4150; - regs.u.r32.ecx = 0x14; - CLEAR_CF(); - return; + break; default: /* AX=E820, DX=534D4150, BX unrecognized */ goto int15_unimplemented; break; } + regs.u.r32.eax = 0x534D4150; + regs.u.r32.ecx = 0x14; + CLEAR_CF(); } else { // if DX != 0x534D4150) goto int15_unimplemented; |