diff -urN linux-2.4.16-sh-cvs/drivers/cdrom/gdrom.c linux/drivers/cdrom/gdrom.c
--- linux-2.4.16-sh-cvs/drivers/cdrom/gdrom.c	Mon Dec  3 17:42:52 2001
+++ linux/drivers/cdrom/gdrom.c	Mon Dec  3 17:42:46 2001
@@ -40,6 +40,15 @@
 #include <asm/io.h>
 #include <asm/dc_sysasic.h>
 
+static struct block_device_operations gdrom_bdops =
+{
+	owner:			THIS_MODULE,
+	open:			cdrom_open,
+	release:		cdrom_release,
+	ioctl:			cdrom_ioctl,
+	check_media_change:	cdrom_media_changed,
+};
+
 static int gdrom_blocksize = 2048;
 static int gdrom_hardsecsize = 2048;
 
@@ -462,7 +471,7 @@
 		return -EBUSY;
 	}
 
-	if (devfs_register_blkdev(MAJOR_NR, DEVICE_STR, &cdrom_fops) != 0) {
+	if (devfs_register_blkdev(MAJOR_NR, DEVICE_STR, &gdrom_bdops) != 0) {
 		printk(KERN_ERR "GDROM: Unable to get major %d for GD-ROM\n", MAJOR_NR);
 		free_irq(GDROM_IRQ, NULL);
 		return -EIO;
diff -urN linux-2.4.16-sh-cvs/include/asm-sh/segment.h linux/include/asm-sh/segment.h
--- linux-2.4.16-sh-cvs/include/asm-sh/segment.h	Wed Dec 31 19:00:00 1969
+++ linux/include/asm-sh/segment.h	Mon Dec  3 17:56:49 2001
@@ -0,0 +1,6 @@
+#ifndef _ASM_SH_SEGMENT_H
+#define _ASM_SH_SEGMENT_H
+
+/* Only here because we have some old header files that expect it.. */
+
+#endif /* _ASM_SH_SEGMENT_H */
