2006-07-29 Vesa Jaaskelainen <chaac@nic.fi>
* disk/i386/pc/biosdisk.c (struct grub_biosdisk_drp): Moved to ... (struct grub_biosdisk_dap): Likewise. * include/grub/i386/pc/biosdisk.h: ... to here. Also corrected linkage settings for all functions.
This commit is contained in:
parent
90ce5d5630
commit
5915059b61
3 changed files with 65 additions and 46 deletions
|
@ -1,3 +1,11 @@
|
|||
2006-07-29 Vesa Jaaskelainen <chaac@nic.fi>
|
||||
|
||||
* disk/i386/pc/biosdisk.c (struct grub_biosdisk_drp): Moved to ...
|
||||
(struct grub_biosdisk_dap): Likewise.
|
||||
|
||||
* include/grub/i386/pc/biosdisk.h: ... to here. Also corrected
|
||||
linkage settings for all functions.
|
||||
|
||||
2006-07-12 Marco Gerards <marco@gnu.org>
|
||||
|
||||
* configure.ac (--enable-mm-debug): Fix typo.
|
||||
|
|
|
@ -26,46 +26,6 @@
|
|||
#include <grub/err.h>
|
||||
#include <grub/term.h>
|
||||
|
||||
/* Drive Parameters. */
|
||||
struct grub_biosdisk_drp
|
||||
{
|
||||
grub_uint16_t size;
|
||||
grub_uint16_t flags;
|
||||
grub_uint32_t cylinders;
|
||||
grub_uint32_t heads;
|
||||
grub_uint32_t sectors;
|
||||
grub_uint64_t total_sectors;
|
||||
grub_uint16_t bytes_per_sector;
|
||||
/* ver 2.0 or higher */
|
||||
grub_uint32_t EDD_configuration_parameters;
|
||||
/* ver 3.0 or higher */
|
||||
grub_uint16_t signature_dpi;
|
||||
grub_uint8_t length_dpi;
|
||||
grub_uint8_t reserved[3];
|
||||
grub_uint8_t name_of_host_bus[4];
|
||||
grub_uint8_t name_of_interface_type[8];
|
||||
grub_uint8_t interface_path[8];
|
||||
grub_uint8_t device_path[8];
|
||||
grub_uint8_t reserved2;
|
||||
grub_uint8_t checksum;
|
||||
|
||||
/* XXX: This is necessary, because the BIOS of Thinkpad X20
|
||||
writes a garbage to the tail of drive parameters,
|
||||
regardless of a size specified in a caller. */
|
||||
grub_uint8_t dummy[16];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Disk Address Packet. */
|
||||
struct grub_biosdisk_dap
|
||||
{
|
||||
grub_uint8_t length;
|
||||
grub_uint8_t reserved;
|
||||
grub_uint16_t blocks;
|
||||
grub_uint32_t buffer;
|
||||
grub_uint64_t block;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
static int
|
||||
grub_biosdisk_get_drive (const char *name)
|
||||
{
|
||||
|
|
|
@ -20,6 +20,9 @@
|
|||
#ifndef GRUB_BIOSDISK_MACHINE_HEADER
|
||||
#define GRUB_BIOSDISK_MACHINE_HEADER 1
|
||||
|
||||
#include <grub/symbol.h>
|
||||
#include <grub/types.h>
|
||||
|
||||
#define GRUB_BIOSDISK_FLAG_LBA 1
|
||||
|
||||
struct grub_biosdisk_data
|
||||
|
@ -31,16 +34,64 @@ struct grub_biosdisk_data
|
|||
unsigned long flags;
|
||||
};
|
||||
|
||||
int grub_biosdisk_rw_int13_extensions (int ah, int drive, void *dap);
|
||||
int grub_biosdisk_rw_standard (int ah, int drive, int coff, int hoff,
|
||||
/* Drive Parameters. */
|
||||
struct grub_biosdisk_drp
|
||||
{
|
||||
grub_uint16_t size;
|
||||
grub_uint16_t flags;
|
||||
grub_uint32_t cylinders;
|
||||
grub_uint32_t heads;
|
||||
grub_uint32_t sectors;
|
||||
grub_uint64_t total_sectors;
|
||||
grub_uint16_t bytes_per_sector;
|
||||
/* ver 2.0 or higher */
|
||||
|
||||
union
|
||||
{
|
||||
grub_uint32_t EDD_configuration_parameters;
|
||||
|
||||
/* Pointer to the Device Parameter Table Extension (ver 3.0+). */
|
||||
grub_uint32_t dpte_pointer;
|
||||
};
|
||||
|
||||
/* ver 3.0 or higher */
|
||||
grub_uint16_t signature_dpi;
|
||||
grub_uint8_t length_dpi;
|
||||
grub_uint8_t reserved[3];
|
||||
grub_uint8_t name_of_host_bus[4];
|
||||
grub_uint8_t name_of_interface_type[8];
|
||||
grub_uint8_t interface_path[8];
|
||||
grub_uint8_t device_path[8];
|
||||
grub_uint8_t reserved2;
|
||||
grub_uint8_t checksum;
|
||||
|
||||
/* XXX: This is necessary, because the BIOS of Thinkpad X20
|
||||
writes a garbage to the tail of drive parameters,
|
||||
regardless of a size specified in a caller. */
|
||||
grub_uint8_t dummy[16];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Disk Address Packet. */
|
||||
struct grub_biosdisk_dap
|
||||
{
|
||||
grub_uint8_t length;
|
||||
grub_uint8_t reserved;
|
||||
grub_uint16_t blocks;
|
||||
grub_uint32_t buffer;
|
||||
grub_uint64_t block;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
int EXPORT_FUNC(grub_biosdisk_rw_int13_extensions) (int ah, int drive, void *dap);
|
||||
int EXPORT_FUNC(grub_biosdisk_rw_standard) (int ah, int drive, int coff, int hoff,
|
||||
int soff, int nsec, int segment);
|
||||
int grub_biosdisk_check_int13_extensions (int drive);
|
||||
int grub_biosdisk_get_diskinfo_int13_extensions (int drive, void *drp);
|
||||
int grub_biosdisk_get_diskinfo_standard (int drive,
|
||||
int EXPORT_FUNC(grub_biosdisk_check_int13_extensions) (int drive);
|
||||
int EXPORT_FUNC(grub_biosdisk_get_diskinfo_int13_extensions) (int drive,
|
||||
void *drp);
|
||||
int EXPORT_FUNC(grub_biosdisk_get_diskinfo_standard) (int drive,
|
||||
unsigned long *cylinders,
|
||||
unsigned long *heads,
|
||||
unsigned long *sectors);
|
||||
int grub_biosdisk_get_num_floppies (void);
|
||||
int EXPORT_FUNC(grub_biosdisk_get_num_floppies) (void);
|
||||
|
||||
void grub_biosdisk_init (void);
|
||||
void grub_biosdisk_fini (void);
|
||||
|
|
Loading…
Reference in a new issue