diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/Makefile linux-2.0.29/Makefile
--- linux.vanilla/Makefile Sat Feb 8 18:54:36 1997
+++ linux-2.0.29/Makefile Thu Mar 20 20:12:47 1997
@@ -29,7 +29,7 @@
HOSTCC =gcc -I$(HPATH)
HOSTCFLAGS =-O2 -fomit-frame-pointer
-CROSS_COMPILE =
+CROSS_COMPILE = m68k-linux-
AS =$(CROSS_COMPILE)as
LD =$(CROSS_COMPILE)ld
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/Makefile linux-2.0.29/arch/m68k/Makefile
--- linux.vanilla/arch/m68k/Makefile Sat Oct 19 12:33:13 1996
+++ linux-2.0.29/arch/m68k/Makefile Fri Mar 21 12:12:58 1997
@@ -28,7 +28,7 @@
LD += -m m68klinux
ifneq ($(COMPILE_ARCH),$(ARCH))
# prefix for cross-compiling binaries
- CROSS_COMPILE = m68k-linuxaout-
+ CROSS_COMPILE = m68k-linux-
endif
endif
@@ -45,7 +45,11 @@
ifdef CONFIG_KERNEL_ELF
LINKFLAGS = -Ttext 0x1000
else
+ifdef CONFIG_MAC
+LINKFLAGS = -omagic -e __start
+else
LINKFLAGS = -qmagic -Ttext 0xFE0
+endif
endif
CFLAGS := $(CFLAGS) -pipe
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/console/fbcon.c linux-2.0.29/arch/m68k/console/fbcon.c
--- linux.vanilla/arch/m68k/console/fbcon.c Sat Oct 5 14:23:56 1996
+++ linux-2.0.29/arch/m68k/console/fbcon.c Mon Mar 24 14:29:50 1997
@@ -24,6 +24,7 @@
* with work by Guenther Kelleter
* Martin Schaller
* Andreas Schwab
+ * Alan Cox
*
*
* This file is subject to the terms and conditions of the GNU General Public
@@ -68,6 +69,8 @@
#include <asm/system.h>
+#include <asm/setup.h> /*AC DEBUG */
+
#include "../../../drivers/char/vt_kern.h" /* vt_cons and vc_resize_con() */
@@ -89,6 +92,7 @@
#undef CONFIG_FBCON_2PLANE
#undef CONFIG_FBCON_4PLANE
#undef CONFIG_FBCON_8PLANE
+#undef CONFIG_FBCON_4PACKED
#undef CONFIG_FBCON_8PACKED
#undef CONFIG_FBCON_16PACKED
#undef CONFIG_FBCON_24PACKED
@@ -100,6 +104,20 @@
#define CONFIG_FBCON_MONO
+/* Mac support */
+
+#ifdef CONFIG_MAC
+#ifndef CONFIG_FBCON_4PACKED
+#define CONFIG_FBCON_4PACKED
+#endif
+#ifndef CONFIG_FBCON_8PACKED
+#define CONFIG_FBCON_8PACKED
+#endif
+#ifndef CONFIG_FBCON_16PACKED
+#define CONFIG_FBCON_16PACKED
+#endif
+#endif
+
/* Amiga support */
#ifdef CONFIG_AMIGA
@@ -159,8 +177,8 @@
#endif
-struct fb_info *fb_info;
-struct display *disp;
+static struct fb_info *fb_info;
+static struct display *disp;
/* ++Geert: Sorry, no hardware cursor support at the moment;
@@ -223,7 +241,7 @@
* Interface used by the world
*/
-static u_long fbcon_startup(u_long kmem_start, char **display_desc);
+/*static */u_long fbcon_startup(u_long kmem_start, char **display_desc);
static void fbcon_init(struct vc_data *conp);
static int fbcon_deinit(struct vc_data *conp);
static int fbcon_changevar(int con);
@@ -378,6 +396,23 @@
/*
+ * 4bpp packed pixels (eg the MAC toby board)
+ */
+
+#ifdef CONFIG_FBCON_4PACKED
+static void bmove_4_packed(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width);
+static void clear_4_packed(struct vc_data *conp, struct display *p, int sy, int sx,
+ int height, int width);
+static void putc_4_packed(struct vc_data *conp, struct display *p, int c, int y,
+ int x);
+static void putcs_4_packed(struct vc_data *conp, struct display *p, const char *s,
+ int count, int y, int x);
+static void rev_char_4_packed(struct display *p, int x, int y);
+#endif /* CONFIG_FBCON_4PACKED */
+
+
+ /*
* 8 bpp Packed Pixels
*/
@@ -454,70 +489,76 @@
#ifdef CONFIG_FBCON_MONO
-struct display_switch dispsw_mono = {
+static struct display_switch dispsw_mono = {
bmove_mono, clear_mono, putc_mono, putcs_mono, rev_char_mono
};
#endif /* CONFIG_FBCON_MONO */
#ifdef CONFIG_FBCON_ILBM
-struct display_switch dispsw_ilbm = {
+static struct display_switch dispsw_ilbm = {
bmove_ilbm, clear_ilbm, putc_ilbm, putcs_ilbm, rev_char_ilbm
};
#endif /* CONFIG_FBCON_ILBM */
#ifdef CONFIG_FBCON_PLANES
-struct display_switch dispsw_plan = {
+static struct display_switch dispsw_plan = {
bmove_plan, clear_plan, putc_plan, putcs_plan, rev_char_plan
};
#endif /* CONFIG_FBCON_PLANES */
#ifdef CONFIG_FBCON_2PLANE
-struct display_switch dispsw_2_plane = {
+static struct display_switch dispsw_2_plane = {
bmove_2_plane, clear_2_plane, putc_2_plane, putcs_2_plane, rev_char_2_plane
};
#endif /* CONFIG_FBCON_2PLANE */
#ifdef CONFIG_FBCON_4PLANE
-struct display_switch dispsw_4_plane = {
+static struct display_switch dispsw_4_plane = {
bmove_4_plane, clear_4_plane, putc_4_plane, putcs_4_plane, rev_char_4_plane
};
#endif /* CONFIG_FBCON_4PLANE */
#ifdef CONFIG_FBCON_8PLANE
-struct display_switch dispsw_8_plane = {
+static struct display_switch dispsw_8_plane = {
bmove_8_plane, clear_8_plane, putc_8_plane, putcs_8_plane, rev_char_8_plane
};
#endif /* CONFIG_FBCON_8PLANE */
+#ifdef CONFIG_FBCON_4PACKED
+static struct display_switch dispsw_4_packed = {
+ bmove_4_packed, clear_4_packed, putc_4_packed, putcs_4_packed, rev_char_4_packed
+};
+#endif /* CONFIG_FBCON_4PACKED */
+
#ifdef CONFIG_FBCON_8PACKED
-struct display_switch dispsw_8_packed = {
+static struct display_switch dispsw_8_packed = {
bmove_8_packed, clear_8_packed, putc_8_packed, putcs_8_packed, rev_char_8_packed
};
#endif /* CONFIG_FBCON_8PACKED */
#ifdef CONFIG_FBCON_16PACKED
-struct display_switch dispsw_16_packed = {
+static struct display_switch dispsw_16_packed = {
bmove_16_packed, clear_16_packed, putc_16_packed, putcs_16_packed,
rev_char_16_packed
};
#endif /* CONFIG_FBCON_16PACKED */
#ifdef CONFIG_FBCON_CYBER
-struct display_switch dispsw_cyber = {
+static struct display_switch dispsw_cyber = {
bmove_cyber, clear_cyber, putc_cyber, putcs_cyber, rev_char_cyber
};
#endif /* CONFIG_FBCON_CYBER */
-static u_long fbcon_startup(u_long kmem_start, char **display_desc)
+/* static */u_long fbcon_startup(u_long kmem_start, char **display_desc)
{
int irqres = 0;
-
+
fb_info = mach_fb_init(&kmem_start);
disp = fb_info->disp;
*display_desc = fb_info->modename;
fb_info->changevar = &fbcon_changevar;
-
+
#ifdef CONFIG_AMIGA
if (MACH_IS_AMIGA) {
cursor_blink_rate = AMIGA_CURSOR_BLINK_RATE;
@@ -664,6 +705,11 @@
p->dispsw = &dispsw_cyber;
else
#endif /* CONFIG_FBCON_CYBER */
+#ifdef CONFIG_FBCON_4PACKED
+ if (p->var.bits_per_pixel == 4)
+ p->dispsw = &dispsw_4_packed;
+ else
+#endif /* CONFIG_FBCON_8PACKED */
#ifdef CONFIG_FBCON_8PACKED
if (p->var.bits_per_pixel == 8)
p->dispsw = &dispsw_8_packed;
@@ -1475,6 +1521,10 @@
int unit = conp->vc_num;
struct display *p = &disp[unit];
+ /* Avoid flickering if there's no real change. */
+ if (p->cursor_x == conp->vc_x && p->cursor_y == conp->vc_y &&
+ (mode == CM_ERASE) == !cursor_on)
+ return 0;
if (CURSOR_UNDRAWN ())
p->dispsw->rev_char(p, p->cursor_x, real_y(p, p->cursor_y));
p->cursor_x = conp->vc_x;
@@ -1861,7 +1911,7 @@
* - Color Interleaved Planes � la Amiga
* - Color Normal Planes
* - Color Interleaved Planes � la Atari (2, 4 and 8 planes)
- * - Color Packed Pixels (8 and 16 bpp)
+ * - Color Packed Pixels (4, 8 and 16 bpp)
* - Cybervision Color Packed Pixels (accelerated)
*/
@@ -3292,6 +3342,170 @@
/* ====================================================================== */
+#ifdef CONFIG_FBCON_4PACKED
+
+ /*
+ * 4 bpp Packed Pixels:
+ * IFF the font is even pixel aligned (that is to say each
+ * character start is a byte start in the pixel pairs). That
+ * avoids us having to mask bytes and means we won't be here
+ * all week. On a MacII that matters _lots_
+ */
+
+static u_short nibbletab_4_packed[]={
+0x0000,0x000f,0x00f0,0x00ff,
+0x0f00,0x0f0f,0x0ff0,0x0fff,
+0xf000,0xf00f,0xf0f0,0xf0ff,
+0xff00,0xff0f,0xfff0,0xffff};
+
+static void bmove_4_packed(struct display *p, int sy, int sx, int dy, int dx,
+ int height, int width)
+{
+ int bytes = p->next_line, linesize = bytes * p->fontheight, rows;
+ u_char *src,*dst;
+
+ if (sx == 0 && dx == 0 && width * 4 == bytes) {
+ mymemmove(p->screen_base + dy * linesize,
+ p->screen_base + sy * linesize,
+ height * linesize);
+ }
+ else {
+ if (dy < sy || (dy == sy && dx < sx)) {
+ src = p->screen_base + sy * linesize + sx * 4;
+ dst = p->screen_base + dy * linesize + dx * 4;
+ for (rows = height * p->fontheight ; rows-- ;) {
+ mymemmove(dst, src, width * 4);
+ src += bytes;
+ dst += bytes;
+ }
+ }
+ else {
+ src = p->screen_base + (sy+height) * linesize + sx * 4
+ - bytes;
+ dst = p->screen_base + (dy+height) * linesize + dx * 4
+ - bytes;
+ for (rows = height * p->fontheight ; rows-- ;) {
+ mymemmove(dst, src, width * 4);
+ src -= bytes;
+ dst -= bytes;
+ }
+ }
+ }
+}
+
+
+static void clear_4_packed(struct vc_data *conp, struct display *p, int sy,
+ int sx, int height, int width)
+{
+ u_char *dest0,*dest;
+ int bytes=p->next_line,lines=height * p->fontheight, rows, i;
+ u_long bgx;
+
+ if(p->screen_base!=0xFDD00020)
+ mac_boom(1);
+ dest = p->screen_base + sy * p->fontheight * bytes + sx * 4;
+
+ bgx=attr_bgcol_ec(p,conp);
+ bgx |= (bgx << 4); /* expand the colour to 32bits */
+ bgx |= (bgx << 8);
+ bgx |= (bgx << 16);
+
+ if (sx == 0 && width * 4 == bytes) {
+ for (i = 0 ; i < lines * width ; i++) {
+ ((u_long *)dest)[0]=bgx;
+ dest+=4;
+ }
+ } else {
+ dest0=dest;
+ for (rows = lines; rows-- ; dest0 += bytes) {
+ dest=dest0;
+ for (i = 0 ; i < width ; i++) {
+ /* memset ?? */
+ ((u_long *)dest)[0]=bgx;
+ dest+=4;
+ }
+ }
+ }
+}
+
+
+static void putc_4_packed(struct vc_data *conp, struct display *p, int c, int y,
+ int x)
+{
+ u_char *dest,*cdat;
+ int bytes=p->next_line,rows;
+ ulong eorx,fgx,bgx;
+
+ c &= 0xff;
+
+ dest = p->screen_base + y * p->fontheight * bytes + x * 4;
+ cdat = p->fontdata + c * p->fontheight;
+
+ fgx=15;/*attr_fgcol(p,conp)&0x0F;*/
+ bgx=attr_bgcol(p,conp)&0x0F;
+ fgx |= (fgx << 4);
+ fgx |= (fgx << 8);
+ bgx |= (bgx << 4);
+ bgx |= (bgx << 8);
+ eorx = fgx ^ bgx;
+
+ for (rows = p->fontheight ; rows-- ; dest += bytes) {
+ ((u_short *)dest)[0]=
+ (nibbletab_4_packed[*cdat >> 4] & eorx) ^ bgx;
+ ((u_short *)dest)[1]=
+ (nibbletab_4_packed[*cdat++ & 0xf] & eorx) ^ bgx;
+ }
+}
+
+
+static void putcs_4_packed(struct vc_data *conp, struct display *p,
+ const char *s, int count, int y, int x)
+{
+ u_char *cdat, c, *dest, *dest0;
+ int rows,bytes=p->next_line;
+ u_long eorx, fgx, bgx;
+
+ dest0 = p->screen_base + y * p->fontheight * bytes + x * 4;
+ fgx=15/*attr_fgcol(p,conp)*/;
+ bgx=attr_bgcol(p,conp);
+ fgx |= (fgx << 4);
+ fgx |= (fgx << 8);
+ fgx |= (fgx << 16);
+ bgx |= (bgx << 4);
+ bgx |= (bgx << 8);
+ bgx |= (bgx << 16);
+ eorx = fgx ^ bgx;
+ while (count--) {
+ c = *s++;
+ cdat = p->fontdata + c * p->fontheight;
+
+ for (rows = p->fontheight, dest = dest0; rows-- ; dest += bytes) {
+ ((u_short *)dest)[0]=
+ (nibbletab_4_packed[*cdat >> 4] & eorx) ^ bgx;
+ ((u_short *)dest)[1]=
+ (nibbletab_4_packed[*cdat++ & 0xf] & eorx) ^ bgx;
+ }
+ dest0+=4;
+ }
+}
+
+
+static void rev_char_4_packed(struct display *p, int x, int y)
+{
+ u_char *dest;
+ int bytes=p->next_line, rows;
+
+ dest = p->screen_base + y * p->fontheight * bytes + x * 4;
+ for (rows = p->fontheight ; rows-- ; dest += bytes) {
+ ((u_long *)dest)[0] ^= 0x0f0f0f0f;
+ }
+}
+
+#endif /* CONFIG_FBCON_4PACKED */
+
+/* ====================================================================== */
+
+
#ifdef CONFIG_FBCON_8PACKED
/*
@@ -3766,8 +3980,13 @@
* The console `switch' structure for the frame buffer based console
*/
+unsigned long precookie=0x0DEC0DED;
+
struct consw fb_con = {
fbcon_startup, fbcon_init, fbcon_deinit, fbcon_clear, fbcon_putc,
fbcon_putcs, fbcon_cursor, fbcon_scroll, fbcon_bmove, fbcon_switch,
fbcon_blank, fbcon_get_font, fbcon_set_font
};
+
+unsigned long postcookie=0xC0DEBA5E;
+
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/kernel/console.c linux-2.0.29/arch/m68k/kernel/console.c
--- linux.vanilla/arch/m68k/kernel/console.c Sat Oct 5 14:24:06 1996
+++ linux-2.0.29/arch/m68k/kernel/console.c Mon Mar 24 11:16:58 1997
@@ -123,6 +123,8 @@
#include <asm/system.h>
#include <asm/bitops.h>
+#include <asm/setup.h>
+
#include "../../../drivers/char/kbd_kern.h"
#include "../../../drivers/char/vt_kern.h"
#include "../../../drivers/char/consolemap.h"
@@ -2215,11 +2217,12 @@
console_driver.throttle = con_throttle;
console_driver.unthrottle = con_unthrottle;
+
if (tty_register_driver(&console_driver))
panic("Couldn't register console driver\n");
kmem_start = conswitchp->con_startup (kmem_start, &display_desc);
-
+
timer_table[BLANK_TIMER].fn = blank_screen;
timer_table[BLANK_TIMER].expires = 0;
if (blankinterval) {
@@ -2252,6 +2255,8 @@
gotoxy(currcons,0,0);
csi_J(currcons, 0);
+ mac_debugging_penguin(3);
+
printable = 1;
update_screen(fg_console);
sw->con_cursor(vc_cons[currcons].d, CM_DRAW);
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/kernel/head.S linux-2.0.29/arch/m68k/kernel/head.S
--- linux.vanilla/arch/m68k/kernel/head.S Sat Oct 5 14:24:07 1996
+++ linux-2.0.29/arch/m68k/kernel/head.S Tue Mar 25 16:12:41 1997
@@ -143,13 +143,20 @@
#define is_not_amiga(lab) moveq &MACH_AMIGA,%d7; cmpl %d4,%d7; jne lab
#define is_not_atari(lab) moveq &MACH_ATARI,%d7; cmpl %d4,%d7; jne lab
+#define is_not_mac(lab) moveq &MACH_MAC,%d7; cmpl %d4,%d7; jne lab
#define is_040_or_060(lab) btst &D6B_0460,%d6; jne lab
#define is_not_040_or_060(lab) btst &D6B_0460,%d6; jeq lab
#define is_060(lab) btst &D6B_060,%d6; jne lab
#define is_not_060(lab) btst &D6B_060,%d6; jeq lab
+#define CONFIG_MAC
+
.text
+#ifdef CONFIG_MAC
+ENTRY(_true_stext)
+.equ .,SYMBOL_NAME(_true_stext)+PAGESIZE
+#endif
ENTRY(_stext)
/*
* Version numbers of the bootinfo interface
@@ -172,6 +179,69 @@
ENTRY(_start)
+
+#ifdef CONFIG_MAC
+# lea _fb_con,%a0
+# movel #_fbcon_startup,a0@
+
+ /*
+ * Yes this isnt the clean way to do it. I need to revise
+ * my 68k asm.
+ */
+ movel %d5,%a0
+ movel %a4, %d1
+ andl #0xFFFF,%d1 /* rows */
+loopy:
+ movel %a3, %d0
+loopx:
+ moveb #0x55, %a0@+
+ dbra %d0,loopx
+ dbra %d1,loopy
+ /*
+ * Check we have top of video right
+ */
+ movel %a3,%d0
+ movel %d5,%a0
+ addl %d0,%d0
+ addl %d0,%d0
+ addl %d0,%d0
+ addl %d0,%d0
+loopw:
+ moveb #00, %a0@+
+ dbra %d0,loopw
+
+ /*
+ * Save the boot info
+ */
+ lea %pc@(SYMBOL_NAME(boot_info)),%a0
+ movel #MACH_MAC,%a0@(BI_machtype)
+ movel %sp@-, %d0
+ movel %d0, %a0@(BI_args)
+ movel %d4,%d0
+ andl #3,%d0
+ movel #33,%d0 /* 68020+FPU hardcode */
+ movel %d0, %a0@(BI_cputype)
+ movel %a4, %a0@(BI_dimensions)
+ movel %d5, %a0@(BI_videoaddr)
+ movel %a3, %a0@(BI_videorow)
+ movel %a2, %a0@(BI_videodepth)
+ lea %pc@(SYMBOL_NAME(_stext):w),%sp
+ movel #0, %a0@(BI_memory+MI_addr)
+ movel #5242880, %a0@(BI_memory+MI_size)
+ jbsr Lserial_init
+
+
+ putr()
+ putc('L')
+ putc('i')
+ putc('n')
+ putc('u')
+ putc('x')
+ putc('.')
+ putr()
+
+
+#else
/*
* Setup initial stack pointer
*/
@@ -187,6 +257,8 @@
1: moveb %a0@+,%a1@+
dbra %d0,1b
+#endif
+
/*
* Record the CPU and machine type.
*/
@@ -206,6 +278,7 @@
jra 2f
1: /* '020 or '030: d6 := no CPU bit, cache mode unused */
moveq #0,%d6
+ movel %d6, 0xFD008020 /* ac check */
2: lea %pc@(SYMBOL_NAME(m68k_pgtable_cachemode)),%a0
moveq #0,%d0
@@ -248,8 +321,7 @@
/*
* Save physical start address of kernel
*/
- lea %pc@(SYMBOL_NAME(_stext)-PAGESIZE:w),%a0
- movel %a0,%d5
+ movel #0,%d5
#ifdef HACKER_KERNEL
lea %pc@(Lkernel_start),%a0
movel %d5,%a0@
@@ -275,6 +347,7 @@
putc('C')
+
/*
* Initialize the pointer tables referred to above. They either point
* to page tables in the case of the 680[46]0 or contain early
@@ -405,6 +478,7 @@
putc('I')
moveq #_PAGE_NOCACHE030+_PAGE_PRESENT,%d0
+ orl #0x80000000, %d0
movel %d0,%a5@(0x40<<2)
jra Lmapphys
@@ -474,6 +548,119 @@
Lnotami:
#endif
+#ifdef CONFIG_MAC
+ is_not_mac(Lnotmac)
+
+/*
+ * Setup a mapping of the 0xFC range for 32M of physical address space
+ * at virtual address 0xFC000000, using early termination page descriptors
+ * for the 68030, and proper page tables for the 680[46]0. Set this area
+ * as non-cacheable. (040/060 one still wrong XXX)
+ */
+
+ putc('H')
+
+ is_040_or_060(Lspmac68040)
+
+ /*
+ * for the 68030, just setup a translation to map in the
+ * 32M of physical address space at virtual address 0x80000000
+ * using an early termination page descriptor.
+ */
+
+ putc('I')
+
+ /*
+ * Nubus space
+ */
+
+ moveq #_PAGE_NOCACHE030+_PAGE_PRESENT,%d0
+ orl #0xFC000000,%d0
+ movel %d0,%a5@(0x7E<<2)
+
+ /*
+ * IO space identity at 0x50-> for now
+ */
+
+ moveq #_PAGE_NOCACHE030+_PAGE_PRESENT,%d0
+ orl #0x50000000,%d0
+ movel %d0,%a5@(0x28<<2)
+
+ /*
+ * MAC onboard video
+ */
+
+ moveq #_PAGE_NOCACHE030+_PAGE_PRESENT,%d0
+ orl #0x60000000,%d0
+ movel %d0,%a5@(0x30<<2)
+
+ jra Lmapphys
+
+Lspmac68040:
+
+ /*
+ * for the 680[46]0, use another pointer table, and allocate 4 more
+ * page tables. Initialize the pointer table to point to the
+ * page tables. Then initialize the page tables to point to
+ * the first 16M of memory, with no caching (noncachable/serialized).
+ */
+
+ /* clear the mac pointer table */
+ lea %a4@(PTR_TABLE_SIZE<<2),%a4
+ moveq #PTR_TABLE_SIZE-1,%d1
+1: clrl %a0@+
+ dbra %d1,1b
+
+ /* allocate 4 pages for 64 page tables */
+ movel %a6,%a3
+ addw #4*PAGESIZE,%a6
+
+ /* initialize the pointer table */
+ movel %a4,%a0
+ movel %a3,%a1
+ addql #_PAGE_TABLE,%a1 /* base descriptor */
+ movel #PAGE_TABLE_SIZE<<2,%d2 /* increment */
+ moveq #TABLENR_16MB-1,%d1
+
+1: movel %a1,%a0@+
+ addl %d2,%a1
+ dbra %d1,1b
+
+ /* ensure that the root table points to the pointer table */
+ movel %a4,%a0
+ addql #_PAGE_TABLE,%a0
+ movel %a0,%a5@(0x40<<2)
+
+ /*
+ * initialize the page tables
+ * descriptor bits include noncachable/serialized and global bits.
+ */
+ movel %a3,%a0
+ movew #_PAGE_GLOBAL040+_PAGE_NOCACHE_S+_PAGE_PRESENT,%a1
+ movel #PAGESIZE,%d2
+ movew #(PAGE_TABLE_SIZE*TABLENR_16MB)-1,%d1
+
+1: movel %a1,%a0@+
+ addl %d2,%a1
+ dbra %d1,1b
+
+ /*
+ * Finally, since we just allocated 4 page tables, make sure that
+ * the virtual mapping of the 4 page tables indicates
+ * noncachable/serialized.
+ */
+ moveq #3,%d0
+1: movel %a2@,%d1 /* a2 already points to root table offset */
+ andw #_CACHEMASK040,%d1
+ orw %d6,%d1
+ movel %d1,%a2@+
+ dbra %d0,1b
+
+ jra Lmapphys
+
+Lnotmac:
+#endif
+
#ifdef CONFIG_ATARI
is_not_atari(Lnotatari)
@@ -591,6 +778,7 @@
* an Amiga since the first 16M is already identity mapped on the Amiga.
*/
Lmapphys:
+
putc('J')
#ifdef CONFIG_AMIGA
@@ -680,6 +868,7 @@
Lmapphysnotamiga:
#endif
+
#ifdef CONFIG_ATARI
is_not_atari(Lmapphysnotatari)
@@ -773,14 +962,64 @@
Lmapphysnotatari:
#endif
+#ifdef CONFIG_MAC
+ is_not_mac(Lmapphysnotmac)
+
+ putc('L')
+
+ is_040_or_060(Lmacmmu68040)
+
+ lea %pc@(Lmmu),%a3
+ movel %d5,%d0
+ /* We always follow this path as the kernel is at 0x0000 after
+ the MacBoot has finished */
+ lea LdoneMMUenable:w,%a0
+ movel #0x80000002,%a3@
+ movel %a5,%a3@(4)
+ .long 0xf0134800 /* pmove %a3@,%srp */
+ .long 0xf0134c00 /* pmove %a3@,%crp */
+ .long 0xf0002400 /* pflusha */
+ /*
+ * enable,super root enable,4096 byte pages,7 bit root index,
+ * 7 bit pointer index, 6 bit page table index.
+ */
+ movel #0x82c07760,%a3@
+ .long 0xf0134000 /* pmove %a3@,%tc (enable the MMU) */
+ jmp %a0@
+
+Lmacmmu68040:
+ movel %d5,%d0
+ lea LdoneMMUenable:w,%a0
+ jra 2f
+2: nop
+ .word 0xf518 /* pflusha */
+ .long 0x4e7bd807 /* movec %a5,%srp */
+ .long 0x4e7bd806 /* movec %a5,%urp */
+ movel #TC_ENABLE+TC_PAGE4K,%d0
+ /*
+ * this value is also ok for the 68060, we don`t use the cache
+ * mode/protection defaults
+ */
+ .long 0x4e7b0003 /* movec %d0,%tc (enable the MMU) */
+ jmp %a0@
+3: moveq #0,%d0
+ .long 0x4e7b0004 /* movec %d0,%itt0 */
+ tstl %a1
+ jra LdoneMMUenable
+
+Lmapphysnotmac:
+#endif
+
LdoneMMUenable:
+
/*
* Fixup the addresses for the kernel pointer table and availmem.
* Convert them from physical addresses to virtual addresses.
*/
- putc('M')
+
+/* putc('M')*/
/*
* d5 contains physaddr of kernel start
@@ -794,7 +1033,7 @@
subl %d5,%a6
movel %a6,SYMBOL_NAME(availmem) /* first available memory address */
- putc('N')
+/* putc('N')*/
#if 0
putr()
@@ -823,10 +1062,24 @@
/*
* Enable caches
*/
+ lea %pc@(SYMBOL_NAME(boot_info)),%a0
+ movel %a0@(BI_videoaddr),%a0
+ movel #2048,%d0
+1:
+ moveb #0x33,%a0@+
+ dbra %d0,1b
is_040_or_060(Lcache680460)
movel #CC3_ENABLE_DB+CC3_CLR_D+CC3_ENABLE_D+CC3_ENABLE_IB+CC3_CLR_I+CC3_ENABLE_I,%d0
movec %d0,%cacr
+
+ lea %pc@(SYMBOL_NAME(boot_info)),%a0
+ movel %a0@(BI_videoaddr),%a0
+ movel #2048,%d0
+1:
+ moveb #0xFF,%a0@+
+ dbra %d0,1b
+
jra 1f
Lcache680460:
@@ -854,7 +1107,7 @@
lea SYMBOL_NAME(init_user_stack)+PAGESIZE,%sp
/* jump to the kernel start */
- putr()
+/* putr()*/
jbsr SYMBOL_NAME(start_kernel)
@@ -903,6 +1156,25 @@
* from the MFP or a serial port of the SCC
*/
+#ifdef CONFIG_MAC
+#define USE_SCC
+
+scc_initable_mac:
+ .byte 9,12 /* Reset */
+ .byte 4,0x44 /* x16, 1 stopbit, no parity */
+ .byte 3,0xc0 /* receiver: 8 bpc */
+ .byte 5,0xe2 /* transmitter: 8 bpc, assert dtr/rts */
+ .byte 9,0 /* no interrupts */
+ .byte 10,0 /* NRZ */
+ .byte 11,0x50 /* use baud rate generator */
+ .byte 12,10,13,0 /* 9600 baud */
+ .byte 14,2,14,3 /* use master clock for BRG, enable */
+ .byte 3,0xc1 /* enable receiver */
+ .byte 5,0xea /* enable transmitter */
+ .byte -1
+ .even
+#endif
+
#ifdef CONFIG_ATARI
/* #define USE_PRINTER */
/* #define USE_SCC */
@@ -1002,7 +1274,16 @@
orb #1,LMFP_TDCDR
bset #1,LMFP_TSR
#endif
+#endif
4:
+#ifdef defined(CONFIG_MAC)
+ lea #50F04000,%a0
+ lea %pc@(scc_initable_mac:w),%a1
+2: moveb %a1@+,%d0
+ jmi 3f
+ moveb %d0,%a0@
+ moveb %a1@+,%a0@
+ jra 2b
#endif
9:
rts
@@ -1025,6 +1306,16 @@
jeq 1b
jra 9f
2:
+#endif
+#ifdef CONFIG_MAC
+#if 0
+ /* should check if MAC .. - note this base is for a MacII and later ! */
+ lea 0x50F04000,%a1
+3: btst #2,%a1@(0)
+ jeq 3b
+#endif
+ moveb %d7,%a1@(4)
+ jra 9f
#endif
#ifdef CONFIG_ATARI
cmpil #MACH_ATARI,%d4
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/kernel/ints.c linux-2.0.29/arch/m68k/kernel/ints.c
--- linux.vanilla/arch/m68k/kernel/ints.c Sat Oct 5 14:24:07 1996
+++ linux-2.0.29/arch/m68k/kernel/ints.c Tue Mar 25 14:45:51 1997
@@ -25,6 +25,7 @@
* which must be served /Roman Zippel
*/
+#include <linux/config.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/kernel_stat.h>
@@ -178,7 +179,7 @@
panic("Can't process interrupt vector %ld\n", vec);
return;
}
-
+
vec -= VEC_SPUR;
kstat.interrupts[vec]++;
irq_list[vec].handler(vec, irq_list[vec].dev_id, fp);
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/kernel/setup.c linux-2.0.29/arch/m68k/kernel/setup.c
--- linux.vanilla/arch/m68k/kernel/setup.c Sat Oct 5 14:24:07 1996
+++ linux-2.0.29/arch/m68k/kernel/setup.c Tue Mar 25 16:13:26 1997
@@ -127,6 +127,10 @@
memory_start = availmem;
memory_end = 0;
+
+ /* AC MAC HACK */
+ if(boot_info.num_memory==0)
+ boot_info.num_memory=1;
for (i = 0; i < boot_info.num_memory; i++)
memory_end += boot_info.memory[i].size & MASK_256K;
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/kernel/traps.c linux-2.0.29/arch/m68k/kernel/traps.c
--- linux.vanilla/arch/m68k/kernel/traps.c Sat Oct 5 14:24:07 1996
+++ linux-2.0.29/arch/m68k/kernel/traps.c Mon Mar 24 14:53:42 1997
@@ -770,6 +770,7 @@
for (i = 0; i < 10; i++)
printk("%04x ", 0xffff & ((short *) fp->ptregs.pc)[i]);
printk ("\n");
+ while(1); /* AC trap */
}
void bad_super_trap (struct frame *fp)
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/Makefile linux-2.0.29/arch/m68k/mac/Makefile
--- linux.vanilla/arch/m68k/mac/Makefile Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/Makefile Mon Mar 24 17:45:24 1997
@@ -0,0 +1,15 @@
+#
+# Makefile for Linux arch/m68k/atari source directory
+#
+# Note! Dependencies are done automagically by 'make dep', which also
+# removes any old dependencies. DON'T put your own dependencies here
+# unless it's something special (ie not a .c file).
+#
+# Note 2! The CFLAGS definitions are now in the main makefile...
+
+EXTRA_CFLAGS := -Wa,-m68020
+
+O_TARGET := mac.o
+O_OBJS := config.o ksyms.o bootparse.o macfb.o macints.o via6522.o
+
+include $(TOPDIR)/Rules.make
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/bootparse.c linux-2.0.29/arch/m68k/mac/bootparse.c
--- linux.vanilla/arch/m68k/mac/bootparse.c Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/bootparse.c Tue Mar 25 18:16:37 1997
@@ -0,0 +1,89 @@
+#include <linux/string.h>
+#include <linux/kernel.h>
+#include <asm/setup.h>
+
+/*
+ * Booter vars
+ */
+
+int boothowto;
+
+
+/*
+ * Called early to parse the environment (passed to us from the booter)
+ * into a bootinfo struct. Will die as soon as we have our own booter
+ */
+
+#define atol(x) simple_strtoul(x,NULL,0)
+
+void parse_booter(char *env)
+{
+ char *name;
+ char *value;
+ while(*env)
+ {
+ name=env;
+ value=name;
+ while(*value!='='&&*value)
+ value++;
+ if(*value=='=')
+ *value++=0;
+ env=value;
+ while(*value)
+ value++;
+#if 0
+ if(strcmp(name,"VIDEO_ADDR")==0)
+ boot_info.bi_mac.videoaddr=atol(value);
+ if(strcmp(name,"ROW_BYTES")==0)
+ boot_info.bi_mac.videorow=atol(value);
+ if(strcmp(name,"SCREEN_DEPTH")==0)
+ boot_info.bi_mac.videodepth=atol(value);
+ if(strcmp(name,"DIMENSIONS")==0)
+ boot_info.bi_mac.dimensions=atol(value);
+#endif
+ if(strcmp(name,"BOOTTIME")==0)
+ boot_info.bi_mac.boottime=atol(value);
+ if(strcmp(name,"GMTBIAS")==0)
+ boot_info.bi_mac.gmtbias=atol(value);
+ if(strcmp(name,"BOOTERVER")==0)
+ boot_info.bi_mac.bootver=atol(value);
+ if(strcmp(name,"MACOS_VIDEO")==0)
+ boot_info.bi_mac.videological=atol(value);
+ if(strcmp(name,"MACOS_SCC")==0)
+ boot_info.bi_mac.scc=atol(value);
+ if(strcmp(name,"MACHINEID")==0)
+ boot_info.bi_mac.id=atol(value);
+ if(strcmp(name,"MEMSIZE")==0)
+ boot_info.bi_mac.memsize=atol(value);
+ if(strcmp(name,"SERIAL_MODEM_FLAGS")==0)
+ boot_info.bi_mac.serialmf=atol(value);
+ if(strcmp(name,"SERIAL_MODEM_HSKICLK")==0)
+ boot_info.bi_mac.serialhsk=atol(value);
+ if(strcmp(name,"SERIAL_MODEM_GPICLK")==0)
+ boot_info.bi_mac.serialgpi=atol(value);
+ if(strcmp(name,"SERIAL_PRINT_FLAGS")==0)
+ boot_info.bi_mac.printf=atol(value);
+ if(strcmp(name,"SERIAL_PRINT_HSKICLK")==0)
+ boot_info.bi_mac.printhsk=atol(value);
+ if(strcmp(name,"SERIAL_PRINT_GPICLK")==0)
+ boot_info.bi_mac.printgpi=atol(value);
+ if(strcmp(name,"PROCESSOR")==0)
+ boot_info.bi_mac.cpuid=atol(value);
+ if(strcmp(name,"ROMBASE")==0)
+ boot_info.bi_mac.rombase=atol(value);
+ if(strcmp(name,"TIMEDBRA")==0)
+ boot_info.bi_mac.timedbra=atol(value);
+ if(strcmp(name,"ADBDELAY")==0)
+ boot_info.bi_mac.adbdelay=atol(value);
+ }
+ /* Fill in the base stuff */
+ boot_info.machtype=MACH_MAC;
+ /* Read this from the macinfo we got ! */
+ boot_info.cputype=CPU_68020|FPUB_68881;
+/* boot_info.memory[0].addr=0;
+ boot_info.memory[0].size=boot_info.bi_mac.memsize;*/
+ boot_info.num_memory=1; /* On a MacII */
+ boot_info.ramdisk_size=0; /* For now */
+ *boot_info.command_line=0;
+ }
+
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/config.c linux-2.0.29/arch/m68k/mac/config.c
--- linux.vanilla/arch/m68k/mac/config.c Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/config.c Tue Mar 25 14:17:18 1997
@@ -0,0 +1,190 @@
+/*
+ * linux/arch/m68k/mac/config.c
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License. See the file COPYING in the main directory of this archive
+ * for more details.
+ */
+
+/*
+ * Miscellaneous linux stuff
+ */
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/mm.h>
+#include <linux/kd.h>
+#include <linux/tty.h>
+#include <linux/console.h>
+#include <linux/interrupt.h>
+
+#include <asm/setup.h>
+
+#include <asm/system.h>
+#include <asm/io.h>
+#include <asm/irq.h>
+#include <asm/pgtable.h>
+#include <asm/machdep.h>
+
+#include "via6522.h"
+
+void *mac_env; /* Loaded by the boot asm */
+
+extern void (*kd_mksound)(unsigned int, unsigned int);
+
+void mac_get_model(char *str)
+{
+ strcpy(str,"Macintosh");
+}
+
+extern void mac_reset();
+
+void mac_bang(int irq, void *vector, struct pt_regs *p)
+{
+ mac_reset();
+}
+
+void mac_sched_init(void (*vector)(int, void *, struct pt_regs *))
+{
+ via_init_clock(vector);
+ request_irq(1, via1_irq, IRQ_FLG_LOCK, "via1", via1_irq);
+ request_irq(6, mac_bang, IRQ_FLG_LOCK, "offswitch", mac_bang);
+}
+
+int mac_keyb_init(void)
+{
+ return 0;
+}
+
+int mac_kbdrate(struct kbd_repeat *k)
+{
+ return 0;
+}
+
+void mac_kbd_leds(unsigned int leds)
+{
+ ;
+}
+
+
+unsigned long mac_gettimeoffset (void)
+{
+ return 0L;
+}
+
+void mac_mksound( unsigned int count, unsigned int ticks )
+{
+ ;
+}
+
+
+void mac_waitbut (void)
+{
+ ;
+}
+
+extern struct consw fb_con;
+extern struct fb_info *mac_fb_init(long *);
+extern void mac_video_setup(char *, int *);
+
+void mac_debug_init (void)
+{
+ ;
+}
+
+
+extern void mac_init_IRQ(void);
+extern int mac_request_irq (unsigned int, void (*)(int, void *,
+ struct pt_regs *),
+ unsigned long, const char *, void *);
+extern int mac_free_irq(unsigned int, void *);
+extern void mac_enable_irq(unsigned int);
+extern void mac_disable_irq(unsigned int);
+extern int mac_get_irq_list(char *);
+extern void mac_default_handler(int irq);
+
+
+void (*mac_handlers[8])(int, void *, struct pt_regs *)=
+{
+ mac_default_handler,
+ mac_default_handler,
+ mac_default_handler,
+ mac_default_handler,
+ mac_default_handler,
+ mac_default_handler,
+ mac_default_handler,
+ mac_default_handler
+};
+
+void config_mac(void)
+{
+ int xd,yd;
+ int y;
+ unsigned char c=0xF0;
+ unsigned char *bp=(unsigned char *)boot_info.bi_mac.videoaddr;
+
+ parse_booter(mac_env);
+
+ xd=boot_info.bi_mac.dimensions;
+
+ yd=xd>>16;
+ xd&=0xFFFF;
+
+ if(xd<512||yd <256|| boot_info.bi_mac.videoaddr!=0xFDD00020)
+ {
+ boot_info.bi_mac.videoaddr=0xFDD00020;
+ mac_boom(9);
+ }
+
+ for(y=0;y<16;y++)
+ {
+ memset(bp+y*boot_info.bi_mac.videorow,
+ 0x00,boot_info.bi_mac.videorow);
+ }
+ memset(bp+y*boot_info.bi_mac.videorow,
+ 0xFF,boot_info.bi_mac.videorow);
+
+ *bp=0xFF;
+ bp[boot_info.bi_mac.videorow-1]=0xFF;
+ bp[boot_info.bi_mac.videorow]=0xF0;
+ bp[boot_info.bi_mac.videorow*2-1]=0x0F;
+
+ for(y=17;y<yd;y++)
+ {
+ memset(bp+y*boot_info.bi_mac.videorow,
+ c,boot_info.bi_mac.videorow);
+ c^=0xFF;
+ }
+
+ mac_debugging_penguin(5);
+
+ mach_sched_init = mac_sched_init;
+ mach_keyb_init = mac_keyb_init;
+ mach_kbdrate = mac_kbdrate;
+ mach_kbd_leds = mac_kbd_leds;
+ mach_init_IRQ = mac_init_IRQ;
+ mach_request_irq = mac_request_irq;
+ mach_free_irq = mac_free_irq;
+ mach_enable_irq = mac_enable_irq;
+ mach_disable_irq = mac_disable_irq;
+ mach_default_handler = mac_handlers;
+ mach_get_irq_list = mac_get_irq_list;
+ mach_gettimeoffset = mac_gettimeoffset;
+ mach_mksound = mac_mksound;
+ mach_reset = mac_reset;
+#ifdef CONFIG_BLK_DEV_FD
+ mach_floppy_init = mac_floppy_init;
+ mach_floppy_setup = mac_floppy_setup;
+#endif
+ conswitchp = &fb_con;
+ waitbut = mac_waitbut;
+ mach_fb_init = mac_fb_init;
+ mach_max_dma_address = 0xffffffff;
+ mach_debug_init = mac_debug_init;
+ mach_video_setup = mac_video_setup;
+ kd_mksound = mac_mksound;
+
+ /*
+ * Determine hardware present
+ */
+}
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/ksyms.c linux-2.0.29/arch/m68k/mac/ksyms.c
--- linux.vanilla/arch/m68k/mac/ksyms.c Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/ksyms.c Fri Mar 14 12:34:34 1997
@@ -0,0 +1,13 @@
+#include <linux/module.h>
+#include <asm/ptrace.h>
+#include <asm/traps.h>
+
+static struct symbol_table mach_mac_symbol_table = {
+#include <linux/symtab_begin.h>
+#include <linux/symtab_end.h>
+};
+
+void mach_mac_syms_export(void)
+{
+ register_symtab(&mach_mac_symbol_table);
+}
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/mac.h linux-2.0.29/arch/m68k/mac/mac.h
--- linux.vanilla/arch/m68k/mac/mac.h Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/mac.h Fri Mar 21 14:43:30 1997
@@ -0,0 +1,74 @@
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0x0F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xF0,0x0F,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xF0,0x0F,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x00,0xF0,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0x00,0x00,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xF0,0xF0,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xF0,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xF0,0x00,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xF0,0x00,0x0F,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x0F,0x00,0x00,0xF0,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0F,0x0F,0x00,0x00,0xF0,0x00,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xF0,0xF0,0xF0,0x0F,0x0F,0x00,0xF0,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0x00,0xF0,0xF0,0x0F,0x0F,0x00,0xF0,0x0F,0x0F,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0x0F,0x0F,0x0F,0x00,0x0F,0x00,0xF0,0xF0,0xF0,0x00,0xF0,0xF0,0x00,0xF0,0x0F,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xF0,0xFF,0x00,0x0F,0x0F,0x0F,0x00,0x0F,0x00,0xF0,0xF0,0x00,0x0F,0x00,0x00,0xF0,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x0F,0x0F,0xF0,0x0F,0x0F,0x00,0x0F,0x0F,0xF0,0x0F,0x00,0x00,0xF0,0x00,0x0F,0x00,0x00,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xF0,0xF0,0xF0,0x0F,0xF0,0xF0,0xF0,0x00,0x00,0xF0,0xF0,0x0F,0x0F,0x00,0xF0,0x00,0x0F,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0x0F,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x0F,0x00,0x0F,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xFF,0xF0,0x0F,0x0F,0x00,0x0F,0x00,0xF0,0x00,0x00,0xF0,0xF0,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0xF0,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x0F,0x00,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xF0,0xF0,0x0F,0x0F,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xF0,0x0F,0x00,0x00,0x00,0xF0,0x0F,0x0F,0x00,0xF0,0xF0,0x0F,0x0F,0x0F,0x00,0x0F,0x00,
+0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x0F,0xFF,0x0F,0xF0,0xF0,0xF0,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0xF0,0x0F,0x00,0x00,0xF0,0xF0,0x00,0xF0,0x00,0xF0,
+0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0x0F,0x00,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0x00,0xF0,0x00,0xF0,0x00,
+0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xFF,0x00,0x00,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x00,0x0F,0x0F,0x00,0xF0,0x00,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x00,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x0F,0x0F,0xFF,0xFF,0x0F,0x0F,0xF0,0xFF,0x00,0x00,0x0F,0xFF,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0x0F,0xFF,0x0F,0x00,0x0F,0xF0,0xFF,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0x00,0x0F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0xFF,0xFF,0x0F,0x0F,0xF0,0xFF,0x00,0x00,0x00,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0x00,0xF0,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0xFF,0xFF,0x0F,0xFF,0x0F,0x00,0x00,0xFF,0xF0,0xFF,0x0F,0xF0,0xF0,0xF0,0xF0,0x0F,0x00,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0xF0,0xF0,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0x0F,0x00,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0xF0,0xF0,0xF0,0xFF,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0x0F,
+0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0xFF,0xFF,0xF0,0xFF,0x0F,0xFF,0x0F,0x00,0x0F,0x0F,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x0F,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x00,0x0F,0xF0,0x00,0x00,0xFF,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x0F,0x00,0x0F,0x00,0x00,0x0F,0x00,0x00,0x0F,0xF0,0xFF,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,0x0F,0x0F,0x0F,0x0F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x0F,0xFF,0x0F,0x0F,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0xF0,0xF0,0x00,0xF0,0xF0,0xF0,0xF0,0xFF,0x0F,0x0F,0x0F,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xFF,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0xF0,0xF0,0x00,0xF0,0xFF,0x00,0x0F,0x00,0xF0,0x0F,0x0F,0x0F,0x0F,0xFF,0xF0,0xF0,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0xF0,0x00,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
+0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0xFF,0x0F,
+0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,
+0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xF0,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0xF0,0x0F,0x00,0xF0,0xF0,0xF0,
+0xFF,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x0F,0x0F,0x00,0x00,0xFF,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0xF0,0xFF,0x0F,0x0F,0x0F,
+0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0xF0,0xF0,0xFF,0x00,0xF0,0xF0,0x0F,0x00,0xF0,0xF0,0xF0,
+0x0F,0xF0,0xF0,0xF0,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0x00,0x00,0xF0,0x00,0x00,0xF0,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x0F,0x00,0x0F,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,
+0xF0,0xF0,0xF0,0x0F,0x0F,0x0F,0x0F,0xFF,0xFF,0x0F,0x00,0xF0,0xF0,0x0F,0x0F,0x0F,0x00,0xFF,0x0F,0x0F,0x00,0xF0,0xF0,0xFF,0x0F,0x00,0xF0,0xF0,0xF0,0x0F,0x0F,0x00,
+0x0F,0x0F,0x0F,0x00,0xF0,0x0F,0x00,0x00,0xF0,0xF0,0x00,0x0F,0x00,0x00,0x0F,0x0F,0x0F,0x00,0xF0,0xF0,0x0F,0x0F,0x00,0x0F,0x0F,0x0F,0x00,0x00,0x0F,0x00,0x00,0x0F
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/macfb.c linux-2.0.29/arch/m68k/mac/macfb.c
--- linux.vanilla/arch/m68k/mac/macfb.c Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/macfb.c Mon Mar 24 14:22:22 1997
@@ -0,0 +1,338 @@
+/*
+ * We've been given MAC frame buffer info by the booter. Now go set it up
+ */
+
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/errno.h>
+#include <linux/string.h>
+#include <linux/mm.h>
+#include <linux/tty.h>
+#include <linux/malloc.h>
+#include <linux/delay.h>
+
+#include <asm/setup.h>
+#include <asm/segment.h>
+#include <asm/pgtable.h>
+#include <asm/irq.h>
+
+#include <linux/fb.h>
+
+#define arraysize(x) (sizeof(x)/sizeof(*(x)))
+
+static struct fb_var_screeninfo mac_fb_defined={
+ 0,0,0,0, /* W,H, W, H (virtual) load xres,xres_virtual*/
+ 0,0, /* virtual -> visible no offset */
+ 8, /* depth -> load bits_per_pixel */
+ 0, /* greyscale ? */
+ {0,0,0}, /* R */
+ {0,0,0}, /* G */
+ {0,0,0}, /* B */
+ {0,0,0}, /* transparency */
+ 0, /* standard pixel format */
+ FB_ACTIVATE_NOW,
+ 274,195, /* 14" monitor *Mikael Nykvist's anyway* */
+ FB_ACCEL_NONE, /* The only way to accelerate a mac is .. */
+ 0L,0L,0L,0L,0L,
+ 0L,0L,0, /* No sync info */
+ FB_VMODE_NONINTERLACED,
+ {0,0,0,0,0,0}
+};
+
+#define NUM_TOTAL_MODES 1
+#define NUM_PREDEF_MODES 1
+
+static struct display disp[MAX_NR_CONSOLES];
+static struct fb_info fb_info;
+static int node;
+
+struct mac_fb_par
+{
+ void *unused;
+};
+
+static int currcon = 0;
+static int current_par_valid = 0;
+struct mac_fb_par current_par;
+
+static int mac_xres,mac_yres,mac_depth, mac_xbytes, mac_vxres;
+static unsigned long mac_videobase;
+static unsigned long mac_videosize;
+
+
+static void mac_fb_encode_var(struct fb_var_screeninfo *var)
+{
+ int i=0;
+ var->xres=mac_xres;
+ var->yres=mac_yres;
+ var->xres_virtual=mac_vxres;
+ var->yres_virtual=var->yres;
+ var->xoffset=0;
+ var->yoffset=0;
+ var->bits_per_pixel = mac_depth;
+ var->grayscale=0;
+ var->transp.offset=0;
+ var->transp.length=0;
+ var->transp.msb_right=0;
+ var->nonstd=0;
+ var->activate=0;
+ var->height= -1;
+ var->width= -1;
+ var->accel=0;
+ var->vmode=FB_VMODE_NONINTERLACED;
+ var->pixclock=0;
+ var->sync=0;
+ var->left_margin=0;
+ var->right_margin=0;
+ var->upper_margin=0;
+ var->lower_margin=0;
+ var->hsync_len=0;
+ var->vsync_len=0;
+ for(i=0;i<arraysize(var->reserved);i++)
+ var->reserved[i]=0;
+ return;
+}
+
+
+static void mac_fb_get_par(struct mac_fb_par *par)
+{
+ *par=current_par;
+}
+
+static void mac_fb_set_par(struct mac_fb_par *par)
+{
+ current_par_valid=1;
+}
+
+static int fb_update_var(int con)
+{
+ return 0;
+}
+
+static int do_fb_set_var(struct fb_var_screeninfo *var, int isactive)
+{
+ mac_fb_encode_var(var);
+ return 0;
+}
+
+static void mac_fb_encode_fix(struct fb_fix_screeninfo *fix)
+{
+ int i;
+ strcpy(fix->id,"Macintosh");
+ fix->smem_start=mac_videobase;
+ fix->smem_len=mac_videosize;
+ fix->type = FB_TYPE_PACKED_PIXELS;
+ fix->visual = FB_VISUAL_PSEUDOCOLOR;
+ fix->xpanstep=0;
+ fix->ypanstep=0;
+ fix->ywrapstep=0;
+ fix->line_length=mac_xbytes;
+ for(i=0;i<arraysize(fix->reserved);i++)
+ fix->reserved[i]=0;
+ return;
+}
+
+
+
+static int mac_fb_get_fix(struct fb_fix_screeninfo *fix, int con)
+{
+ struct mac_fb_par par;
+ mac_fb_get_par(&par);
+ mac_fb_encode_fix(fix);
+ return 0;
+}
+
+static int mac_fb_get_var(struct fb_var_screeninfo *var, int con)
+{
+ struct mac_fb_par par;
+ if(con==-1)
+ {
+ mac_fb_get_par(&par);
+ mac_fb_encode_var(var);
+ }
+ else
+ *var=disp[con].var;
+ return 0;
+}
+
+static void mac_fb_set_disp(int con)
+{
+ struct fb_fix_screeninfo fix;
+
+ mac_fb_get_fix(&fix,con);
+ if (con == -1)
+ con=0;
+ disp[con].screen_base = (u_char *)fix.smem_start;
+ disp[con].visual = fix.visual;
+ disp[con].type = fix.type;
+ disp[con].type_aux = fix.type_aux;
+ disp[con].ypanstep = fix.ypanstep;
+ disp[con].ywrapstep = fix.ywrapstep;
+ disp[con].line_length = fix.line_length;
+ disp[con].next_line = fix.line_length;
+ disp[con].can_soft_blank = 0;
+ disp[con].inverse = 0;
+}
+
+static int mac_fb_set_var(struct fb_var_screeninfo *var, int con)
+{
+ int err;
+
+ if ((err=do_fb_set_var(var, 1)))
+ return err;
+ return 0;
+}
+
+static int mac_fb_get_cmap(struct fb_cmap *cmap, int kspc, int con)
+{
+ return -EINVAL;
+}
+
+static int mac_fb_set_cmap(struct fb_cmap *cmap, int kspc, int con)
+{
+ return -EINVAL;
+}
+
+static int mac_fb_pan_display(struct fb_var_screeninfo *var, int con)
+{
+ /* no panning */
+ return -EINVAL;
+}
+
+static int mac_fb_ioctl(struct inode *inode, struct file *file,
+ unsigned int cmd, unsigned long arg, int con)
+{
+ return -EINVAL;
+}
+
+static struct fb_ops mac_fb_ops = {
+ mac_fb_get_fix,
+ mac_fb_get_var,
+ mac_fb_set_var,
+ mac_fb_get_cmap,
+ mac_fb_set_cmap,
+ mac_fb_pan_display,
+ mac_fb_ioctl
+};
+
+void mac_video_setup(char *options, int *ints)
+{
+}
+
+static int macfb_switch(int con)
+{
+ do_fb_set_var(&disp[con].var,1);
+ currcon=con;
+ return 0;
+}
+
+/* 0 unblank, 1 blank, 2 no vsync, 3 no hsync, 4 off */
+
+static void macfb_blank(int blank)
+{
+ /* Not supported */
+}
+
+struct fb_info *mac_fb_init(long *mem_start)
+{
+ /* nubus_remap the video .. */
+ int err;
+
+ mac_xres=boot_info.bi_mac.dimensions&0xFFFF;
+ mac_yres=(boot_info.bi_mac.dimensions&0xFFFF0000)>>16;
+ mac_depth=boot_info.bi_mac.videodepth;
+ mac_xbytes=boot_info.bi_mac.videorow;
+ mac_vxres = (mac_xbytes/mac_depth)*8;
+ mac_videosize=mac_xbytes*mac_yres;
+ mac_videobase=boot_info.bi_mac.videoaddr;
+ mac_debugging_penguin(4);
+
+ /*
+ * Fill in the available video resolution
+ */
+
+ mac_fb_defined.xres=mac_xres;
+ mac_fb_defined.yres=mac_yres;
+ mac_fb_defined.xres_virtual=mac_vxres;
+ mac_fb_defined.yres_virtual=mac_yres;
+ mac_fb_defined.bits_per_pixel=mac_depth;
+
+
+ /*
+ * Let there be consoles..
+ */
+ err=register_framebuffer("Macintosh", &node, &mac_fb_ops, NUM_TOTAL_MODES, &mac_fb_defined);
+ if(err<0)
+ {
+ mac_boom(5);
+ return NULL;
+ }
+ fb_info.disp=disp;
+ fb_info.switch_con=&macfb_switch;
+ fb_info.updatevar=&fb_update_var;
+ fb_info.blank=&macfb_blank;
+ do_fb_set_var(&mac_fb_defined,1);
+ mac_fb_get_var(&disp[0].var, -1);
+ mac_fb_set_disp(-1);
+
+ return &fb_info;
+}
+
+static char that_penguin[]={
+#include "that_penguin.h"
+};
+
+void mac_debugging_penguin(int peng)
+{
+ unsigned char *pengoffset;
+ unsigned char *pptr;
+ unsigned char *pdptr=that_penguin;
+ int i;
+
+ pengoffset=(unsigned char *)(boot_info.bi_mac.videoaddr+
+ 64*boot_info.bi_mac.videorow)+40*peng;
+
+ pptr=pengoffset;
+
+ for(i=0;i<74;i++)
+ {
+ memcpy(pptr,pdptr,32);
+ pdptr+=32;
+ pptr+=boot_info.bi_mac.videorow;
+ }
+}
+
+static char kaboom_map[]={
+#include "mac.h"
+};
+
+static void mac_boom_boom(void)
+{
+ static unsigned char *boomoffset=NULL;
+ unsigned char *pptr;
+ unsigned char *pdptr=kaboom_map;
+ int i;
+
+ if(!boomoffset)
+ boomoffset=(unsigned char *)(boot_info.bi_mac.videoaddr+
+ 256*boot_info.bi_mac.videorow);
+ else
+ boomoffset+=32;
+
+ pptr=boomoffset;
+
+ for(i=0;i<74;i++)
+ {
+ memcpy(pptr,pdptr,32);
+ pdptr+=32;
+ pptr+=boot_info.bi_mac.videorow;
+ }
+}
+
+void mac_boom(int booms)
+{
+ int i;
+ for(i=0;i<booms;i++)
+ mac_boom_boom();
+ while(1);
+}
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/macints.c linux-2.0.29/arch/m68k/mac/macints.c
--- linux.vanilla/arch/m68k/mac/macints.c Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/macints.c Tue Mar 25 14:34:25 1997
@@ -0,0 +1,57 @@
+/*
+ * Macintosh interrupts
+ *
+ * 2 - VIA1 ???
+ * 6 - Off switch
+ */
+
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/sched.h>
+#include <linux/kernel_stat.h>
+
+#include <asm/system.h>
+#include <asm/irq.h>
+#include <asm/traps.h>
+
+asmlinkage void bad_interrupt(void);
+
+void mac_init_IRQ(void)
+{
+}
+
+/*
+ * We have no machine specific interrupts on a macintoy
+ */
+
+int mac_request_irq (unsigned int irq, void (*handler)(int, void *, struct pt_regs *),
+ unsigned long flags, const char *devname, void *dev_id)
+{
+ return -EINVAL;
+}
+
+int mac_free_irq (unsigned int irq, void *dev_id)
+{
+ return -EINVAL;
+}
+
+void mac_enable_irq (unsigned int irq)
+{
+ ;
+}
+
+void mac_disable_irq (unsigned int irq)
+{
+ ;
+}
+
+int mac_get_irq_list (char *buf)
+{
+ return 0;
+}
+
+void mac_default_handler(int irq)
+{
+/* printk("Unexpected IRQ %d\n",irq);*/
+}
+
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/that_penguin.h linux-2.0.29/arch/m68k/mac/that_penguin.h
--- linux.vanilla/arch/m68k/mac/that_penguin.h Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/that_penguin.h Fri Mar 21 13:44:53 1997
@@ -0,0 +1,74 @@
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xF0,0xFF,0xFF,0x0F,0xF0,0xF0,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x00,0xFF,0xFF,0x0F,0xFF,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xF0,0x0F,0xFF,0x0F,0xFF,0xF0,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x00,0x0F,0x0F,0xFF,0xF0,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0xFF,0x00,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x0F,0xF0,0x00,0x00,0xFF,0xF0,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x0F,0xF0,0xFF,0xFF,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0xFF,0xF0,0x00,0x0F,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x0F,0xFF,0x00,0xFF,0xF0,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0xF0,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x0F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0xF0,0x00,0x00,
+0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0xF0,0x00,0x00,
+0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,
+0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,
+0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,
+0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,
+0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,
+0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
+0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x0F,0xF0,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
+0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,
+0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,
+0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,
+0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0xFF,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,
+0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/via6522.c linux-2.0.29/arch/m68k/mac/via6522.c
--- linux.vanilla/arch/m68k/mac/via6522.c Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/via6522.c Tue Mar 25 15:38:06 1997
@@ -0,0 +1,184 @@
+/*
+ * 6522 Versatile Interface Adapter (VIA)
+ *
+ * There are two of these on the Mac II. Some IRQ's are vectored
+ * via them as are assorted bits and bobs - eg rtc, adb.
+ */
+
+#include <linux/config.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
+#include <linux/mm.h>
+
+#include "via6522.h"
+
+unsigned char *via1=(unsigned char *)VIABASE;
+unsigned char *via2=(unsigned char *)VIABASE2;
+
+/*
+ * VIA1 - hardwired vectors
+ */
+
+extern void via_wtf(int slot, void *via, struct pt_regs *regs);
+
+static struct via_irq_tab via1_func_tab=
+{
+ {
+ via_wtf,
+ via_wtf,
+ via_wtf/*adb_event*/, /* The frontdesk bus events on a MacII anyway */
+ via_wtf,
+ via_wtf,
+ via_wtf,
+ via_wtf, /* Slot 6 is replaced by the timer */
+ via_wtf
+ }
+};
+
+#define MAC_CLOCK_TICK (783300/HZ) /* ticks per HZ */
+#define MAC_CLOCK_LOW (MAC_CLOCK_TICK&0xFF)
+#define MAC_CLOCK_HIGH (MAC_CLOCK_TICK>>8)
+
+
+void via_init_clock(void (*func)(int, void *, struct pt_regs *))
+{
+ unsigned char c;
+
+ mac_debugging_penguin(6);
+
+ /*
+ * Shut it down
+ */
+
+ via_write(via1,vIER, 0x7F);
+ via_write(via2,vIER, 0x7F);
+
+ /*
+ * Kill the timers
+ */
+
+ via_write(via1,vT1LL,0);
+ via_write(via1,vT1LH,0);
+ via_write(via1,vT1CL,0);
+ via_write(via1,vT1CH,0);
+ via_write(via1,vT2CL,0);
+ via_write(via1,vT2CH,0);
+
+ /*
+ * Now do via2
+ */
+
+ via_write(via2,vT1LL,0);
+ via_write(via2,vT1LH,0);
+ via_write(via2,vT1CL,0);
+ via_write(via2,vT1CH,0);
+ via_write(via2,vT2CL,0);
+ via_write(via2,vT2CH,0);
+
+ /*
+ * Disable the timer latches
+ */
+
+ c=via_read(via1,vACR);
+ via_write(via1,vACR,c&0x3F);
+
+ c=via_read(via2,vACR);
+ via_write(via2,vACR,c&0x3F);
+
+ /*
+ * Now start the clock - we want 100Hz
+ */
+
+ via_write(via1,vACR,via_read(via1,vACR)|0x40);
+
+ via_write(via1,vT1LL, MAC_CLOCK_LOW);
+ via_write(via1,vT1LH, MAC_CLOCK_HIGH);
+ via_write(via1,vT1CL, MAC_CLOCK_LOW);
+ via_write(via1,vT1CH, MAC_CLOCK_HIGH);
+
+ /*
+ * And enable its interrupt
+ */
+
+ via_write(via1, vIER, via_read(via1, vIER)|0x80|(1<<6));
+
+ via1_func_tab.vector[6]=func;
+ mac_debugging_penguin(7);
+}
+
+
+static void via_irq(unsigned char *via, struct via_irq_tab *irqtab,
+ struct pt_regs *regs)
+{
+ unsigned char events=(via_read(via, vIFR)&via_read(via,vIER))&0x7F;
+ int i;
+
+ /*
+ * Shouldnt happen
+ */
+
+ if(events==0)
+ {
+ printk("via_irq: nothing pending!\n");
+ return;
+ }
+
+ /*
+ * Clear the pending flag
+ */
+
+ via_write(via, vIFR, events);
+
+ /*
+ * Now see what bits are raised
+ */
+
+ for(i=0;i<7;i++)
+ {
+ if(events&(1<<i))
+ (irqtab->vector[i])(i, via, regs);
+ }
+
+ /*
+ * And done..
+ */
+}
+
+/*
+ * System interrupts
+ */
+
+void via1_irq(int irq, void *dev_id, struct pt_regs *regs)
+{
+ via_irq(via1, &via1_func_tab, regs);
+}
+
+/*
+ * Nubus interrupts
+ */
+
+void via2_irq(int irq, void *dev_id, struct pt_regs *regs)
+{
+#if 0
+ via_irq(via1, &nubus_func_tab, regs);
+#endif
+}
+
+/*
+ * Unexpected via interrupt
+ */
+
+void via_wtf(int slot, void *via, struct pt_regs *regs)
+{
+ printk("Unexpected event %d on via %p\n",slot,via);
+}
+
+/*
+ * The power switch - yes its software!
+ */
+
+void mac_reset(void)
+{
+ via_write(via2,vDirB,via_read(via2,vDirB)|0x04);
+ via_write(via2,vBufB,via_read(via2,vBufB)&~0x04);
+}
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mac/via6522.h linux-2.0.29/arch/m68k/mac/via6522.h
--- linux.vanilla/arch/m68k/mac/via6522.h Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/arch/m68k/mac/via6522.h Tue Mar 25 11:27:18 1997
@@ -0,0 +1,95 @@
+/*
+ * 6522 Versatile Interface Adapter (VIA)
+ *
+ * There are two of these on the Mac II. Some IRQ's are vectored
+ * via them as are assorted bits and bobs - eg rtc, adb. The picture
+ * is a bit incomplete as the Mac documentation doesnt cover this well
+ */
+
+#define VIABASE 0x50F00000
+#define VIABASE2 0x50F02000
+
+/*
+ * Not all of these are true post MacII I think
+ */
+
+#define VIA1A_vSccWrReq 0x80 /* SCC write */
+#define VIA1A_vRev8 0x40 /* Revision 8 board ??? */
+#define VIA1A_vHeadSel 0x20 /* Head select for IWM */
+#define VIA1A_vOverlay 0x10
+#define VIA1A_vSync 0x08
+#define VIA1A_vVolume 0x07 /* Audio volume mask */
+
+#define VIA1B_vSound 0x80 /* Audio on/off */
+#define VIA1B_vMystery 0x40
+#define VIA1B_vADBS2 0x20 /* ADB state 2 */
+#define VIA1B_vADBS1 0x10 /* ADB state 1 */
+#define VIA1B_vADBInt 0x08 /* ADB interrupt */
+#define VIA1B_vRTCEnb 0x04 /* Real time clock */
+#define VIA1B_vRTCClk 0x02
+#define VIA1B_vRTCData 0x01
+
+/*
+ * VIA2 A register is the interrupt lines raised off the nubus
+ * slots.
+ */
+
+#define VIA2A_vIRQE 0x20
+#define VIA2A_vIRQD 0x10
+#define VIA2A_vIRQC 0x08
+#define VIA2A_vIRQB 0x04
+#define VIA2A_vIRQA 0x02
+#define VIA2A_vIRQ9 0x01
+
+/*
+ * Register B has the fun stuff in it
+ */
+
+#define VIA2B_vPower 0x04 /* Off switch */
+#define VIA2B_vBusLk 0x02
+#define VIA2B_vCDis 0x01
+
+extern __inline__ void via_write(unsigned char *via,int reg, int v)
+{
+ via[reg]=v;
+}
+
+extern __inline__ int via_read(unsigned char *via,int reg)
+{
+ return (int)via[reg];
+}
+
+extern unsigned char *via1,*via2;
+
+/*
+ * 6522 registers - see databook
+ */
+
+#define vBufB 0x0000
+#define vDirB 0x0400
+#define vDirA 0x0600
+#define vT1CL 0x0800
+#define vT1CH 0x0a00
+#define vT1LL 0x0c00
+#define vT1LH 0x0e00
+#define vT2CL 0x1000
+#define vT2CH 0x1200
+#define vSR 0x1400
+#define vACR 0x1600
+#define vPCR 0x1800
+#define vIFR 0x1a00
+#define vIER 0x1c00
+#define vBufA 0x1e00 /* register A */
+
+/*
+ * VIA interrupt
+ */
+
+struct via_irq_tab
+{
+ void (*vector[8])(int, void *, struct pt_regs *);
+};
+
+extern void via1_irq(int, void *, struct pt_regs *);
+extern void via2_irq(int, void *, struct pt_regs *);
+
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/arch/m68k/mm/memory.c linux-2.0.29/arch/m68k/mm/memory.c
--- linux.vanilla/arch/m68k/mm/memory.c Wed Feb 19 14:44:42 1997
+++ linux-2.0.29/arch/m68k/mm/memory.c Tue Mar 25 17:55:20 1997
@@ -288,8 +288,18 @@
unsigned long voff = vaddr;
unsigned long offset = 0;
+ if(boot_info.memory[0].size==0)
+ {
+ mac_boom(2);
+ }
+
for (i = 0; i < boot_info.num_memory; i++)
{
+#if 0
+ printk("Want %lx virtual, Try slot %d (%lx,%lx)\n",
+ vaddr, i, boot_info.memory[i].addr,
+ boot_info.memory[i].size);
+#endif
if (voff < offset + boot_info.memory[i].size) {
#ifdef DEBUGPV
printk ("VTOP(%lx)=%lx\n", vaddr,
Binary files linux.vanilla/drivers/char/conmakehash and linux-2.0.29/drivers/char/conmakehash differ
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/include/asm-m68k/setup.h linux-2.0.29/include/asm-m68k/setup.h
--- linux.vanilla/include/asm-m68k/setup.h Thu Feb 27 17:42:23 1997
+++ linux-2.0.29/include/asm-m68k/setup.h Tue Mar 25 18:59:19 1997
@@ -185,6 +185,43 @@
#endif /* __ASSEMBLY__ */
+#ifndef __ASSEMBLY__
+
+struct bi_Macintosh
+{
+ unsigned long videoaddr;
+ unsigned long videorow;
+ unsigned long videodepth;
+ unsigned long dimensions;
+ unsigned long args;
+ unsigned long boottime;
+ unsigned long gmtbias;
+ unsigned long bootver;
+ unsigned long videological;
+ unsigned long scc;
+ unsigned long id;
+ unsigned long memsize;
+ unsigned long serialmf;
+ unsigned long serialhsk;
+ unsigned long serialgpi;
+ unsigned long printf;
+ unsigned long printhsk;
+ unsigned long printgpi;
+ unsigned long cpuid;
+ unsigned long rombase;
+ unsigned long adbdelay;
+ unsigned long timedbra;
+};
+
+#else
+
+#define BI_videoaddr BI_un
+#define BI_videorow BI_videoaddr+4
+#define BI_videodepth BI_videorow+4
+#define BI_dimensions BI_videodepth+4
+#define BI_args BI_dimensions+4
+#endif
+
#define NUM_MEMINFO 4
#define MACH_AMIGA 1
@@ -241,8 +278,13 @@
# define MACH_TYPE (MACH_ATARI)
#endif
+/*
+ * FIXME: When we have the booter we can multiarch this
+ */
+
#if defined(CONFIG_MAC)
-# error Currently no Mac support!
+# define MAC_TYPE (MACH_MAC)
+# define MACH_IS_MAC (1)
#endif
#ifndef MACH_TYPE
@@ -336,6 +378,7 @@
union {
struct bi_Amiga bi_ami; /* Amiga specific information */
struct bi_Atari bi_ata; /* Atari specific information */
+ struct bi_Macintosh bi_mac; /* Mac specific information */
} bi_un;
};
#define bi_amiga bi_un.bi_ami
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/include/linux/compile.h linux-2.0.29/include/linux/compile.h
--- linux.vanilla/include/linux/compile.h Thu Jan 1 01:00:00 1970
+++ linux-2.0.29/include/linux/compile.h Tue Mar 25 18:59:48 1997
@@ -0,0 +1,6 @@
+#define UTS_VERSION "#245 Tue Mar 25 18:59:46 GMT 1997"
+#define LINUX_COMPILE_TIME "18:59:46"
+#define LINUX_COMPILE_BY "alan"
+#define LINUX_COMPILE_HOST "blacksun"
+#define LINUX_COMPILE_DOMAIN "cymru.net"
+#define LINUX_COMPILER "gcc version 2.7.2.2"
diff --recursive --unified --new-file --exclude-from exclude linux.vanilla/init/main.c linux-2.0.29/init/main.c
--- linux.vanilla/init/main.c Wed Dec 4 22:38:06 1996
+++ linux-2.0.29/init/main.c Tue Mar 25 18:38:17 1997
@@ -39,6 +39,9 @@
#include <asm/bugs.h>
+#include <asm/setup.h> /*AC*/
+#include <linux/console.h> /*AC*/
+
/*
* Versions of gcc older than that listed below may actually compile
* and link okay, but the end product can have subtle run time bugs.
@@ -789,8 +792,15 @@
asmlinkage void start_kernel(void)
{
+ extern unsigned long precookie,postcookie; /* AC*/
char * command_line;
+ extern struct consw fb_con;
+ extern u_long fbcon_startup(u_long, char **);
+
+ if(fb_con.con_startup!=fbcon_startup)
+ mac_boom(1);
+
/*
* This little check will move.
*/
@@ -833,12 +843,16 @@
memory_start += prof_len * sizeof(unsigned int);
memset(prof_buffer, 0, prof_len * sizeof(unsigned int));
}
+ mac_debugging_penguin(1);
memory_start = console_init(memory_start,memory_end);
+/* mac_debugging_penguin(2);*/
#ifdef CONFIG_PCI
memory_start = pci_init(memory_start,memory_end);
#endif
memory_start = kmalloc_init(memory_start,memory_end);
sti();
+ printk("Memory start=%p, Memory end=%p\n",
+ memory_start,memory_end);
calibrate_delay();
memory_start = inode_init(memory_start,memory_end);
memory_start = file_table_init(memory_start,memory_end);
Binary files linux.vanilla/scripts/mkdep and linux-2.0.29/scripts/mkdep differ