Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-x86setup: [x86 setup] EDD: Fix the computation of the MBR sector buffer [x86 setup] Newline after setup signature failure message x86 boot code comments typos
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
* code16gcc.h
|
* code16gcc.h
|
||||||
*
|
*
|
||||||
* This file is -include'd when compiling 16-bit C code.
|
* This file is -include'd when compiling 16-bit C code.
|
||||||
* Note: this asm() needs to be emitted before gcc omits any code.
|
* Note: this asm() needs to be emitted before gcc emits any code.
|
||||||
* Depending on gcc version, this requires -fno-unit-at-a-time or
|
* Depending on gcc version, this requires -fno-unit-at-a-time or
|
||||||
* -fno-toplevel-reorder.
|
* -fno-toplevel-reorder.
|
||||||
*
|
*
|
||||||
|
@@ -72,17 +72,18 @@ static u32 read_mbr_sig(u8 devno, struct edd_info *ei)
|
|||||||
u32 mbrsig;
|
u32 mbrsig;
|
||||||
u32 buf_base, mbr_base;
|
u32 buf_base, mbr_base;
|
||||||
extern char _end[];
|
extern char _end[];
|
||||||
static char mbr_buf[1024];
|
|
||||||
|
|
||||||
sector_size = ei->params.bytes_per_sector;
|
sector_size = ei->params.bytes_per_sector;
|
||||||
if (!sector_size)
|
if (!sector_size)
|
||||||
sector_size = 512; /* Best available guess */
|
sector_size = 512; /* Best available guess */
|
||||||
|
|
||||||
|
/* Produce a naturally aligned buffer on the heap */
|
||||||
buf_base = (ds() << 4) + (u32)&_end;
|
buf_base = (ds() << 4) + (u32)&_end;
|
||||||
mbr_base = (buf_base+sector_size-1) & ~(sector_size-1);
|
mbr_base = (buf_base+sector_size-1) & ~(sector_size-1);
|
||||||
mbrbuf_ptr = mbr_buf + (mbr_base-buf_base);
|
mbrbuf_ptr = _end + (mbr_base-buf_base);
|
||||||
mbrbuf_end = mbrbuf_ptr + sector_size;
|
mbrbuf_end = mbrbuf_ptr + sector_size;
|
||||||
|
|
||||||
|
/* Make sure we actually have space on the heap... */
|
||||||
if (!(boot_params.hdr.loadflags & CAN_USE_HEAP))
|
if (!(boot_params.hdr.loadflags & CAN_USE_HEAP))
|
||||||
return 0;
|
return 0;
|
||||||
if (mbrbuf_end > (char *)(size_t)boot_params.hdr.heap_end_ptr)
|
if (mbrbuf_end > (char *)(size_t)boot_params.hdr.heap_end_ptr)
|
||||||
|
@@ -225,7 +225,7 @@ start_of_setup:
|
|||||||
int $0x13
|
int $0x13
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
# We will have entired with %cs = %ds+0x20, normalize %cs so
|
# We will have entered with %cs = %ds+0x20, normalize %cs so
|
||||||
# it is on par with the other segments.
|
# it is on par with the other segments.
|
||||||
pushw %ds
|
pushw %ds
|
||||||
pushw $setup2
|
pushw $setup2
|
||||||
@@ -280,4 +280,4 @@ die:
|
|||||||
.section ".initdata", "a"
|
.section ".initdata", "a"
|
||||||
setup_corrupt:
|
setup_corrupt:
|
||||||
.byte 7
|
.byte 7
|
||||||
.string "No setup signature found..."
|
.string "No setup signature found...\n"
|
||||||
|
@@ -80,7 +80,7 @@ static void move_kernel_around(void)
|
|||||||
*/
|
*/
|
||||||
static void mask_all_interrupts(void)
|
static void mask_all_interrupts(void)
|
||||||
{
|
{
|
||||||
outb(0xff, 0xa1); /* Mask all interrupts on the seconday PIC */
|
outb(0xff, 0xa1); /* Mask all interrupts on the secondary PIC */
|
||||||
io_delay();
|
io_delay();
|
||||||
outb(0xfb, 0x21); /* Mask all but cascade on the primary PIC */
|
outb(0xfb, 0x21); /* Mask all but cascade on the primary PIC */
|
||||||
io_delay();
|
io_delay();
|
||||||
|
@@ -44,7 +44,7 @@ static int set_bios_mode(u8 mode)
|
|||||||
: "+a" (ax)
|
: "+a" (ax)
|
||||||
: : "ebx", "ecx", "edx", "esi", "edi");
|
: : "ebx", "ecx", "edx", "esi", "edi");
|
||||||
|
|
||||||
do_restore = 1; /* Assume video contents was lost */
|
do_restore = 1; /* Assume video contents were lost */
|
||||||
new_mode = ax & 0x7f; /* Not all BIOSes are clean with the top bit */
|
new_mode = ax & 0x7f; /* Not all BIOSes are clean with the top bit */
|
||||||
|
|
||||||
if (new_mode == mode)
|
if (new_mode == mode)
|
||||||
|
Reference in New Issue
Block a user