Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48c7ae67 authored by H. Peter Anvin's avatar H. Peter Anvin Committed by Linus Torvalds
Browse files

Make struct boot_params a real structure, and remove obsolete fields



Make struct boot_params a real structure, and remove the handling of
some obsolete fields, in particular hd*_info, which was only used by
the ST-506 driver, and likely to be wrong for that driver on any
modern BIOS.

Signed-off-by: default avatarH. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9c25d134
Loading
Loading
Loading
Loading
+1 −11
Original line number Original line Diff line number Diff line
@@ -102,19 +102,10 @@ static unsigned int highmem_pages = -1;
/*
/*
 * Setup options
 * Setup options
 */
 */
struct drive_info_struct { char dummy[32]; } drive_info;
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_HD) || \
    defined(CONFIG_BLK_DEV_IDE_MODULE) || defined(CONFIG_BLK_DEV_HD_MODULE)
EXPORT_SYMBOL(drive_info);
#endif
struct screen_info screen_info;
struct screen_info screen_info;
EXPORT_SYMBOL(screen_info);
EXPORT_SYMBOL(screen_info);
struct apm_info apm_info;
struct apm_info apm_info;
EXPORT_SYMBOL(apm_info);
EXPORT_SYMBOL(apm_info);
struct sys_desc_table_struct {
	unsigned short length;
	unsigned char table[0];
};
struct edid_info edid_info;
struct edid_info edid_info;
EXPORT_SYMBOL_GPL(edid_info);
EXPORT_SYMBOL_GPL(edid_info);
struct ist_info ist_info;
struct ist_info ist_info;
@@ -134,7 +125,7 @@ unsigned long saved_videomode;


static char __initdata command_line[COMMAND_LINE_SIZE];
static char __initdata command_line[COMMAND_LINE_SIZE];


unsigned char __initdata boot_params[PARAM_SIZE];
struct boot_params __initdata boot_params;


#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
struct edd edd;
struct edd edd;
@@ -528,7 +519,6 @@ void __init setup_arch(char **cmdline_p)
#endif
#endif


 	ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
 	ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
 	drive_info = DRIVE_INFO;
 	screen_info = SCREEN_INFO;
 	screen_info = SCREEN_INFO;
	edid_info = EDID_INFO;
	edid_info = EDID_INFO;
	apm_info.bios = APM_BIOS_INFO;
	apm_info.bios = APM_BIOS_INFO;
+85 −0
Original line number Original line Diff line number Diff line
#ifndef _ASM_BOOTPARAM_H
#define _ASM_BOOTPARAM_H

#include <linux/types.h>
#include <linux/screen_info.h>
#include <linux/apm_bios.h>
#include <asm/e820.h>
#include <linux/edd.h>
#include <video/edid.h>

struct setup_header {
	u8	setup_sects;
	u16	root_flags;
	u32	syssize;
	u16	ram_size;
	u16	vid_mode;
	u16	root_dev;
	u16	boot_flag;
	u16	jump;
	u32	header;
	u16	version;
	u32	realmode_swtch;
	u16	start_sys;
	u16	kernel_version;
	u8	type_of_loader;
	u8	loadflags;
#define LOADED_HIGH	0x01
#define CAN_USE_HEAP	0x80
	u16	setup_move_size;
	u32	code32_start;
	u32	ramdisk_image;
	u32	ramdisk_size;
	u32	bootsect_kludge;
	u16	heap_end_ptr;
	u16	_pad1;
	u32	cmd_line_ptr;
	u32	initrd_addr_max;
	u32	kernel_alignment;
	u8	relocatable_kernel;
} __attribute__((packed));

struct sys_desc_table {
	u16 length;
	u8  table[14];
};

struct efi_info {
	u32 _pad1;
	u32 efi_systab;
	u32 efi_memdesc_size;
	u32 efi_memdec_version;
	u32 efi_memmap;
	u32 fi_memmap_size;
	u32 _pad2[2];
};

/* The so-called "zeropage" */
struct boot_params {
	struct screen_info screen_info;			/* 0x000 */
	struct apm_bios_info apm_bios_info;		/* 0x040 */
	u8  _pad2[12];					/* 0x054 */
	u32 speedstep_info[4];				/* 0x060 */
	u8  _pad3[16];					/* 0x070 */
	u8  hd0_info[16];	/* obsolete! */		/* 0x080 */
	u8  hd1_info[16];	/* obsolete! */		/* 0x090 */
	struct sys_desc_table sys_desc_table;		/* 0x0a0 */
	u8  _pad4[144];					/* 0x0b0 */
	struct edid_info edid_info;			/* 0x140 */
	struct efi_info efi_info;			/* 0x1c0 */
	u32 alt_mem_k;					/* 0x1e0 */
	u32 scratch;		/* Scratch field! */	/* 0x1e4 */
	u8  e820_entries;				/* 0x1e8 */
	u8  eddbuf_entries;				/* 0x1e9 */
	u8  edd_mbr_sig_buf_entries;			/* 0x1ea */
	u8  _pad6[6];					/* 0x1eb */
	struct setup_header hdr;    /* setup header */	/* 0x1f1 */
	u8  _pad7[0x290-0x1f1-sizeof(struct setup_header)];
	u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];	/* 0x290 */
	struct e820entry e820_map[E820MAX];		/* 0x2d0 */
	u8  _pad8[48];					/* 0xcd0 */
	struct edd_info eddbuf[EDDMAXNR];		/* 0xd00 */
	u8  _pad9[276];					/* 0xeec */
} __attribute__((packed));

#endif /* _ASM_BOOTPARAM_H */
+6 −4
Original line number Original line Diff line number Diff line
@@ -26,12 +26,15 @@
#define NEW_CL_POINTER		0x228	/* Relative to real mode data */
#define NEW_CL_POINTER		0x228	/* Relative to real mode data */


#ifndef __ASSEMBLY__
#ifndef __ASSEMBLY__

#include <asm/bootparam.h>

/*
/*
 * This is set up by the setup-routine at boot-time
 * This is set up by the setup-routine at boot-time
 */
 */
extern unsigned char boot_params[PARAM_SIZE];
extern struct boot_params boot_params;


#define PARAM	(boot_params)
#define PARAM	((char *)&boot_params)
#define SCREEN_INFO (*(struct screen_info *) (PARAM+0))
#define SCREEN_INFO (*(struct screen_info *) (PARAM+0))
#define EXT_MEM_K (*(unsigned short *) (PARAM+2))
#define EXT_MEM_K (*(unsigned short *) (PARAM+2))
#define ALT_MEM_K (*(unsigned long *) (PARAM+0x1e0))
#define ALT_MEM_K (*(unsigned long *) (PARAM+0x1e0))
@@ -39,8 +42,7 @@ extern unsigned char boot_params[PARAM_SIZE];
#define E820_MAP    ((struct e820entry *) (PARAM+E820MAP))
#define E820_MAP    ((struct e820entry *) (PARAM+E820MAP))
#define APM_BIOS_INFO (*(struct apm_bios_info *) (PARAM+0x40))
#define APM_BIOS_INFO (*(struct apm_bios_info *) (PARAM+0x40))
#define IST_INFO   (*(struct ist_info *) (PARAM+0x60))
#define IST_INFO   (*(struct ist_info *) (PARAM+0x60))
#define DRIVE_INFO (*(struct drive_info_struct *) (PARAM+0x80))
#define SYS_DESC_TABLE (*(struct sys_desc_table *)(PARAM+0xa0))
#define SYS_DESC_TABLE (*(struct sys_desc_table_struct*)(PARAM+0xa0))
#define EFI_SYSTAB ((efi_system_table_t *) *((unsigned long *)(PARAM+0x1c4)))
#define EFI_SYSTAB ((efi_system_table_t *) *((unsigned long *)(PARAM+0x1c4)))
#define EFI_MEMDESC_SIZE (*((unsigned long *) (PARAM+0x1c8)))
#define EFI_MEMDESC_SIZE (*((unsigned long *) (PARAM+0x1c8)))
#define EFI_MEMDESC_VERSION (*((unsigned long *) (PARAM+0x1cc)))
#define EFI_MEMDESC_VERSION (*((unsigned long *) (PARAM+0x1cc)))
+1 −15
Original line number Original line Diff line number Diff line
#ifndef _LINUX_BOOT_H
#include <asm-i386/boot.h>
#define _LINUX_BOOT_H

/* Don't touch these, unless you really know what you're doing. */
#define DEF_INITSEG	0x9000
#define DEF_SYSSEG	0x1000
#define DEF_SETUPSEG	0x9020
#define DEF_SYSSIZE	0x7F00

/* Internal svga startup constants */
#define NORMAL_VGA	0xffff		/* 80x25 mode */
#define EXTENDED_VGA	0xfffe		/* 80x50 mode */
#define ASK_VGA		0xfffd		/* ask for it at bootup */

#endif
+1 −0
Original line number Original line Diff line number Diff line
#include <asm-i386/bootparam.h>