diff options
| author | Stefan Hajnoczi | 2008-06-30 20:51:41 +0200 |
|---|---|---|
| committer | Michael Brown | 2008-06-30 20:51:41 +0200 |
| commit | ce511285341fe4f6dcd4d56743a2b13b18a3c906 (patch) | |
| tree | 77931a077debe4de2ccc40dfbf4aefbe3a59f0d2 | |
| parent | [GDB] Provide functions to manually enter GDB stub. (diff) | |
| download | ipxe-ce511285341fe4f6dcd4d56743a2b13b18a3c906.tar.gz ipxe-ce511285341fe4f6dcd4d56743a2b13b18a3c906.tar.xz ipxe-ce511285341fe4f6dcd4d56743a2b13b18a3c906.zip | |
[bzImage] Support loading zImage kernels
zImage kernels require the real-mode portion to be loaded at 9000:0000
rather than 1000:0000.
| -rw-r--r-- | src/arch/i386/image/bzimage.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/arch/i386/image/bzimage.c b/src/arch/i386/image/bzimage.c index 38443f5be..9372f55c5 100644 --- a/src/arch/i386/image/bzimage.c +++ b/src/arch/i386/image/bzimage.c @@ -414,7 +414,9 @@ static int bzimage_load_header ( struct image *image, } /* Calculate load address and size of real-mode portion */ - load_ctx->rm_kernel_seg = 0x1000; /* place RM kernel at 1000:0000 */ + load_ctx->rm_kernel_seg = ( ( bzhdr->loadflags & BZI_LOAD_HIGH ) ? + 0x1000 : /* 1000:0000 (bzImage) */ + 0x9000 ); /* 9000:0000 (zImage) */ load_ctx->rm_kernel = real_to_user ( load_ctx->rm_kernel_seg, 0 ); load_ctx->rm_filesz = ( ( bzhdr->setup_sects ? bzhdr->setup_sects : 4 ) + 1 ) << 9; |
