bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compile Errors buildung GRUB


From: tschweikle
Subject: Re: Compile Errors buildung GRUB
Date: Sun, 15 Oct 2000 20:04:41 +0200

> From: address@hidden
> Subject: Re: Compile Errors buildung GRUB
> Date: Sat, 14 Oct 2000 20:54:22 +0200
>
>> kernel-2.2.16
>
>  Well, that's quite strange. Isn't your kernel
> header <linux/hdreg.h> broken?

Doesn't look like. Here it is just for comparison:

#ifndef _LINUX_HDREG_H
#define _LINUX_HDREG_H

/*
 * This file contains some defines for the AT-hd-controller.
 * Various sources.
 */

#define HD_IRQ 14**/* the standard disk interrupt */

/* ide.c has its own port definitions in "ide.h" */

/* Hd controller regs. Ref: IBM AT Bios-listing */
#define HD_DATA**0x1f0*/* _CTL when writing */
#define HD_ERROR*0x1f1*/* see err-bits */
#define HD_NSECTOR*0x1f2*/* nr of sectors to read/write */
#define HD_SECTOR*0x1f3*/* starting sector */
#define HD_LCYL**0x1f4*/* starting cylinder */
#define HD_HCYL**0x1f5*/* high byte of starting cyl */
#define HD_CURRENT*0x1f6*/* 101dhhhh , d=drive, hhhh=head */
#define HD_STATUS*0x1f7*/* see status-bits */
#define HD_FEATURE HD_ERROR*/* same io address, read=error, write=feature */
#define HD_PRECOMP HD_FEATURE*/* obsolete use of this port - predates IDE */
#define HD_COMMAND HD_STATUS*/* same io address, read=status, write=cmd */

#define HD_CMD**0x3f6*/* used for resets */
#define HD_ALTSTATUS*0x3f6*/* same as HD_STATUS but doesn't clear irq */

/* remainder is shared between hd.c, ide.c, ide-cd.c, and the hdparm utility */

/* Bits of HD_STATUS */
#define ERR_STAT*0x01
#define INDEX_STAT*0x02
#define ECC_STAT*0x04*/* Corrected error */
#define DRQ_STAT*0x08
#define SEEK_STAT*0x10
#define WRERR_STAT*0x20
#define READY_STAT*0x40
#define BUSY_STAT*0x80

/* Values for HD_COMMAND */
#define WIN_RESTORE**0x10
#define WIN_READ**0x20
#define WIN_WRITE**0x30
#define WIN_WRITE_VERIFY*0x3C
#define WIN_VERIFY**0x40
#define WIN_FORMAT**0x50
#define WIN_INIT**0x60
#define WIN_SEEK**0x70
#define WIN_DIAGNOSE**0x90
#define WIN_SPECIFY**0x91*/* set drive geometry translation */
#define WIN_IDLEIMMEDIATE*0xE1*/* force drive to become "ready" */
#define WIN_SETIDLE1**0xE3
#define WIN_SETIDLE2**0x97

#define WIN_STANDBYNOW1**0xE0
#define WIN_STANDBYNOW2**0x94
#define WIN_SLEEPNOW1**0xE6
#define WIN_SLEEPNOW2**0x99
#define WIN_CHECKPOWERMODE1*0xE5
#define WIN_CHECKPOWERMODE2*0x98

#define WIN_DOORLOCK**0xDE*/* lock door on removable drives */
#define WIN_DOORUNLOCK**0xDF*/* unlock door on removable drives */

#define WIN_MULTREAD**0xC4*/* read sectors using multiple mode */
#define WIN_MULTWRITE**0xC5*/* write sectors using multiple mode */
#define WIN_SETMULT**0xC6*/* enable/disable multiple mode */
#define WIN_IDENTIFY**0xEC*/* ask drive to identify itself**/
#define WIN_IDENTIFY_DMA*0xEE*/* same as WIN_IDENTIFY, but DMA */
#define WIN_SETFEATURES**0xEF*/* set special drive features */
#define WIN_READDMA**0xC8*/* read sectors using DMA transfers */
#define WIN_WRITEDMA**0xCA*/* write sectors using DMA transfers */

#define WIN_QUEUED_SERVICE*0xA2*/* */
#define WIN_READDMA_QUEUED*0xC7*/* read sectors using Queued DMA transfers */
#define WIN_WRITEDMA_QUEUED*0xCC*/* write sectors using Queued DMA transfers */

#define WIN_READ_BUFFER**0xE4*/* force read only 1 sector */
#define WIN_WRITE_BUFFER*0xE8*/* force write only 1 sector */

#define WIN_SMART**0xB0*/* self-monitoring and reporting */

/* Additional drive command codes used by ATAPI devices. */
#define WIN_PIDENTIFY**0xA1*/* identify ATAPI device**/
#define WIN_SRST**0x08*/* ATAPI soft reset command */
#define WIN_PACKETCMD**0xA0*/* Send a packet command. */

#define DISABLE_SEAGATE**0xFB
#define EXABYTE_ENABLE_NEST*0xF0

/* WIN_SMART sub-commands */

#define SMART_READ_VALUES*0xd0
#define SMART_READ_THRESHOLDS*0xd1
#define SMART_AUTOSAVE**0xd2
#define SMART_SAVE**0xd3
#define SMART_IMMEDIATE_OFFLINE*0xd4
#define SMART_READ_LOG_SECTOR*0xd5
#define SMART_WRITE_LOG_SECTOR*0xd6
#define SMART_ENABLE**0xd8
#define SMART_DISABLE**0xd9
#define SMART_STATUS**0xda
#define SMART_AUTO_OFFLINE*0xdb

/* WIN_SETFEATURES sub-commands */

#define SETFEATURES_EN_WCACHE*0x02*/* Enable write cache */
#define SETFEATURES_XFER*0x03*/* Set transfer mode */
#*define XFER_UDMA_7*0x47*/* 0100|0111 */
#*define XFER_UDMA_6*0x46*/* 0100|0110 */
#*define XFER_UDMA_5*0x45*/* 0100|0101 */
#*define XFER_UDMA_4*0x44*/* 0100|0100 */
#*define XFER_UDMA_3*0x43*/* 0100|0011 */
#*define XFER_UDMA_2*0x42*/* 0100|0010 */
#*define XFER_UDMA_1*0x41*/* 0100|0001 */
#*define XFER_UDMA_0*0x40*/* 0100|0000 */
#*define XFER_MW_DMA_2*0x22*/* 0010|0010 */
#*define XFER_MW_DMA_1*0x21*/* 0010|0001 */
#*define XFER_MW_DMA_0*0x20*/* 0010|0000 */
#*define XFER_SW_DMA_2*0x12*/* 0001|0010 */
#*define XFER_SW_DMA_1*0x11*/* 0001|0001 */
#*define XFER_SW_DMA_0*0x10*/* 0001|0000 */
#*define XFER_PIO_4*0x0C*/* 0000|1100 */
#*define XFER_PIO_3*0x0B*/* 0000|1011 */
#*define XFER_PIO_2*0x0A*/* 0000|1010 */
#*define XFER_PIO_1*0x09*/* 0000|1001 */
#*define XFER_PIO_0*0x08*/* 0000|1000 */
#*define XFER_PIO_SLOW*0x00*/* 0000|0000 */
#define SETFEATURES_DIS_DEFECT*0x04*/* Disable Defect Management */
#define SETFEATURES_EN_APM*0x05*/* Enable advanced power management */
#define SETFEATURES_DIS_MSN*0x31*/* Disable Media Status Notification */
#define SETFEATURES_DIS_RLA*0x55*/* Disable read look-ahead feature */
#define SETFEATURES_EN_RI*0x5D*/* Enable release interrupt */
#define SETFEATURES_EN_SI*0x5E*/* Enable SERVICE interrupt */
#define SETFEATURES_DIS_RPOD*0x66*/* Disable reverting to power on defaults */
#define SETFEATURES_DIS_WCACHE*0x82*/* Disable write cache */
#define SETFEATURES_EN_DEFECT*0x84*/* Enable Defect Management */
#define SETFEATURES_DIS_APM*0x85*/* Disable advanced power management */
#define SETFEATURES_EN_MSN*0x95*/* Enable Media Status Notification */
#define SETFEATURES_EN_RLA*0xAA*/* Enable read look-ahead feature */
#define SETFEATURES_PREFETCH*0xAB*/* Sets drive prefetch value */
#define SETFEATURES_EN_RPOD*0xCC*/* Enable reverting to power on defaults */
#define SETFEATURES_DIS_RI*0xDD*/* Disable release interrupt */
#define SETFEATURES_DIS_SI*0xDE*/* Disable SERVICE interrupt */

/* WIN_SECURITY sub-commands */

#define SECURITY_SET_PASSWORD**0xBA*/* 0xF1 */
#define SECURITY_UNLOCK***0xBB*/* 0xF2 */
#define SECURITY_ERASE_PREPARE**0xBC*/* 0xF3 */
#define SECURITY_ERASE_UNIT**0xBD*/* 0xF4 */
#define SECURITY_FREEZE_LOCK**0xBE*/* 0xF5 */
#define SECURITY_DISABLE_PASSWORD*0xBF*/* 0xF6 */

/* Bits for HD_ERROR */
#define MARK_ERR*0x01*/* Bad address mark */
#define TRK0_ERR*0x02*/* couldn't find track 0 */
#define ABRT_ERR*0x04*/* Command aborted */
#define MCR_ERR**0x08*/* media change request */
#define ID_ERR**0x10*/* ID field not found */
#define ECC_ERR**0x40*/* Uncorrectable ECC error */
#define*BBD_ERR**0x80*/* pre-EIDE meaning:  block marked bad */
#define*ICRC_ERR*0x80*/* new meaning:  CRC error during transfer */

struct hd_geometry {
      unsigned char heads;
      unsigned char sectors;
      unsigned short cylinders;
      unsigned long start;
};

/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x030n/0x031n */
#define HDIO_GETGEO**0x0301*/* get device geometry */
#define HDIO_GET_UNMASKINTR*0x0302*/* get current unmask setting */
#define HDIO_GET_MULTCOUNT*0x0304*/* get current IDE blockmode setting */
#define HDIO_OBSOLETE_IDENTITY*0x0307*/* OBSOLETE, DO NOT USE: returns 142 bytes
*/ #define HDIO_GET_KEEPSETTINGS*0x0308*/* get keep-settings-on-reset flag */
#define HDIO_GET_32BIT**0x0309*/* get current io_32bit setting */
#define HDIO_GET_NOWERR**0x030a*/* get ignore-write-error flag */
#define HDIO_GET_DMA**0x030b*/* get use-dma flag */
#define HDIO_GET_NICE**0x030c*/* get nice flags */
#define HDIO_GET_IDENTITY*0x030d*/* get IDE identification info */
#define HDIO_DRIVE_CMD_AEB*0x031e
#define HDIO_DRIVE_TASK**0x031e
#define HDIO_DRIVE_CMD**0x031f*/* execute a special drive command */

/* hd/ide ctl's that pass (arg) non-ptr values are numbered 0x032n/0x033n */
#define HDIO_SET_MULTCOUNT*0x0321*/* change IDE blockmode */
#define HDIO_SET_UNMASKINTR*0x0322*/* permit other irqs during I/O */
#define HDIO_SET_KEEPSETTINGS*0x0323*/* keep ioctl settings on reset */
#define HDIO_SET_32BIT**0x0324*/* change io_32bit flags */
#define HDIO_SET_NOWERR**0x0325*/* change ignore-write-error flag */
#define HDIO_SET_DMA**0x0326*/* change use-dma flag */
#define HDIO_SET_PIO_MODE*0x0327*/* reconfig interface to new speed */
#define HDIO_SCAN_HWIF**0x0328*/* register and (re)scan interface */
#define HDIO_SET_NICE**0x0329*/* set nice flags */
#define HDIO_UNREGISTER_HWIF*0x032a  /* unregister interface */

/* BIG GEOMETRY */
struct hd_big_geometry {
*unsigned char heads;
*unsigned char sectors;
*unsigned int cylinders;
*unsigned long start;
};

/* hd/ide ctl's that pass (arg) ptrs to user space are numbered 0x033n/0x033n */
#define HDIO_GETGEO_BIG**0x0330*/* */
#define HDIO_GETGEO_BIG_RAW*0x0331*/* */

#define __NEW_HD_DRIVE_ID
/* structure returned by HDIO_GET_IDENTITY, as per ANSI ATA2 rev.2f spec */
struct hd_driveid {
*unsigned short*config;**/* lots of obsolete bit flags */
*unsigned short*cyls;**/* "physical" cyls */
*unsigned short*reserved2;*/* reserved (word 2) */
*unsigned short*heads;**/* "physical" heads */
*unsigned short*track_bytes;*/* unformatted bytes per track */
*unsigned short*sector_bytes;*/* unformatted bytes per sector */
*unsigned short*sectors;*/* "physical" sectors per track */
*unsigned short*vendor0;*/* vendor unique */
*unsigned short*vendor1;*/* vendor unique */
*unsigned short*vendor2;*/* vendor unique */
*unsigned char*serial_no[20];*/* 0 = not_specified */
*unsigned short*buf_type;
*unsigned short*buf_size;*/* 512 byte increments; 0 = not_specified */
*unsigned short*ecc_bytes;*/* for r/w long cmds; 0 = not_specified */
*unsigned char*fw_rev[8];*/* 0 = not_specified */
*unsigned char*model[40];*/* 0 = not_specified */
*unsigned char*max_multsect;*/* 0=not_implemented */
*unsigned char*vendor3;*/* vendor unique */
*unsigned short*dword_io;*/* 0=not_implemented; 1=implemented */
*unsigned char*vendor4;*/* vendor unique */
*unsigned char*capability;*/* bits 0:DMA 1:LBA 2:IORDYsw 3:IORDYsup*/
*unsigned short*reserved50;*/* reserved (word 50) */
*unsigned char*vendor5;*/* vendor unique */
*unsigned char*tPIO;**/* 0=slow, 1=medium, 2=fast */
*unsigned char*vendor6;*/* vendor unique */
*unsigned char*tDMA;**/* 0=slow, 1=medium, 2=fast */
*unsigned short*field_valid;*/* bits 0:cur_ok 1:eide_ok */
*unsigned short*cur_cyls;*/* logical cylinders */
*unsigned short*cur_heads;*/* logical heads */
*unsigned short*cur_sectors;*/* logical sectors per track */
*unsigned short*cur_capacity0;*/* logical total sectors on drive */
*unsigned short*cur_capacity1;*/*  (2 words, misaligned int)     */
*unsigned char*multsect;*/* current multiple sector count */
*unsigned char*multsect_valid;*/* when (bit0==1) multsect is ok */
*unsigned int*lba_capacity;*/* total number of sectors */
*unsigned short*dma_1word;*/* single-word dma info */
*unsigned short*dma_mword;*/* multiple-word dma info */
*unsigned short  eide_pio_modes; /* bits 0:mode3 1:mode4 */
*unsigned short  eide_dma_min;*/* min mword dma cycle time (ns) */
*unsigned short  eide_dma_time;*/* recommended mword dma cycle time (ns) */
*unsigned short  eide_pio;       /* min cycle time (ns), no IORDY  */
*unsigned short  eide_pio_iordy; /* min cycle time (ns), with IORDY */
*unsigned short*words69_70[2];*/* reserved words 69-70 */
*/* HDIO_GET_IDENTITY currently returns only words 0 through 70 */
*unsigned short*words71_74[4];*/* reserved words 71-74 */
*unsigned short  queue_depth;*/*  */
*unsigned short  words76_79[4];*/* reserved words 76-79 */
*unsigned short  major_rev_num;*/*  */
*unsigned short  minor_rev_num;*/*  */
*unsigned short  command_set_1;*/* bits 0:Smart 1:Security 2:Removable 3:PM */
*unsigned short  command_set_2;*/* bits 14:Smart Enabled 13:0 zero */
*unsigned short  cfsse;**/* command set-feature supported extensions */
*unsigned short  cfs_enable_1;*/* command set-feature enabled */
*unsigned short  cfs_enable_2;*/* command set-feature enabled */
*unsigned short  csf_default;*/* command set-feature default */
*unsigned short  dma_ultra;*/*  */
*unsigned short*word89;**/* reserved (word 89) */
*unsigned short*word90;**/* reserved (word 90) */
*unsigned short*CurAPMvalues;*/* current APM values */
*unsigned short*word92;**/* reserved (word 92) */
*unsigned short*hw_config;*/* hardware config */
*unsigned short  words94_125[32];/* reserved words 94-125 */
*unsigned short*last_lun;*/* reserved (word 126) */
*unsigned short*word127;*/* reserved (word 127) */
*unsigned short*dlf;**/* device lock function
***** * 15:9*reserved
***** * 8*security level 1:max 0:high
***** * 7:6*reserved
***** * 5*enhanced erase
***** * 4*expire
***** * 3*frozen
***** * 2*locked
***** * 1*en/disabled
***** * 0*capability
***** */
*unsigned short  csfo;**/* current set features options
***** * 15:4*reserved
***** * 3*auto reassign
***** * 2*reverting
***** * 1*read-look-ahead
***** * 0*write cache
***** */
*unsigned short*words130_155[26];/* reserved vendor words 130-155 */
*unsigned short*word156;
*unsigned short*words157_159[3];/* reserved vendor words 157-159 */
*unsigned short*words160_255[95];/* reserved words 160-255 */
};

/*
 * IDE "nice" flags. These are used on a per drive basis to determine
 * when to be nice and give more bandwidth to the other devices which
 * share the same IDE bus.
 */
#define IDE_NICE_DSC_OVERLAP*(0)*/* per the DSC overlap protocol */
#define IDE_NICE_ATAPI_OVERLAP*(1)*/* not supported yet */
#define IDE_NICE_0**(2)*/* when sure that it won't affect us */
#define IDE_NICE_1**(3)*/* when probably won't affect us much */
#define IDE_NICE_2**(4)*/* when we know it's on our expense */

#ifdef __KERNEL__
/*
 * These routines are used for kernel command line parameters from main.c:
 */
#include <linux/config.h>

#ifdef CONFIG_BLK_DEV_HD
void hd_setup(char *, int *);
#endif /* CONFIG_BLK_DEV_HD */

#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
int ide_register(int io_port, int ctl_port, int irq);
void ide_unregister(unsigned int);
#endif /* CONFIG_BLK_DEV_IDE || CONFIG_BLK_DEV_IDE_MODULE */

#endif  /* __KERNEL__ */

#endif*/* _LINUX_HDREG_H */

--
Thomas


reply via email to

[Prev in Thread] Current Thread [Next in Thread]