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 +#include /*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 #include +#include + #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 #include #include #include @@ -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 +#include +#include + +/* + * 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 +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#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 +#include +#include + +static struct symbol_table mach_mac_symbol_table = { +#include +#include +}; + +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 +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#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;ireserved);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;ireserved);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 +#include +#include +#include + +#include +#include +#include + +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 +#include +#include +#include + +#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<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 +#include /*AC*/ +#include /*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 .