Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
hw/m68k: define Macintosh Quadra 800
If you want to test the machine, it doesn't yet boot a MacROM, but you can boot a linux kernel from the command line. You can install your own disk using debian-installer with: ./qemu-system-m68k \ -M q800 \ -serial none -serial mon:stdio \ -m 1000M -drive file=m68k.qcow2,format=qcow2 \ -net nic,model=dp83932,addr=09:00:07:12:34:57 \ -append "console=ttyS0 vga=off" \ -kernel vmlinux-4.15.0-2-m68k \ -initrd initrd.gz \ -drive file=debian-9.0-m68k-NETINST-1.iso \ -drive file=m68k.qcow2,format=qcow2 \ -nographic If you use a graphic adapter instead of "-nographic", you can use "-g" to set the size of the display (I use "-g 1600x800x24"). Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com> Co-developed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20191026164546.30020-11-laurent@vivier.eu>
- Loading branch information
Showing
5 changed files
with
521 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,3 +19,6 @@ config Q800 | |
select NUBUS | ||
select MACFB | ||
select SWIM | ||
select ESCC | ||
select ESP | ||
select DP8393X |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
obj-$(CONFIG_AN5206) += an5206.o mcf5206.o | ||
obj-$(CONFIG_MCF5208) += mcf5208.o mcf_intc.o | ||
obj-$(CONFIG_NEXTCUBE) += next-kbd.o next-cube.o | ||
obj-$(CONFIG_Q800) += q800.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
/* | ||
* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note | ||
* | ||
* Bootinfo tags from linux bootinfo.h and bootinfo-mac.h: | ||
* This is an easily parsable and extendable structure containing all | ||
* information to be passed from the bootstrap to the kernel | ||
* | ||
* This structure is copied right after the kernel by the bootstrap | ||
* routine. | ||
*/ | ||
|
||
#ifndef HW_M68K_BOOTINFO_H | ||
#define HW_M68K_BOOTINFO_H | ||
struct bi_record { | ||
uint16_t tag; /* tag ID */ | ||
uint16_t size; /* size of record */ | ||
uint32_t data[0]; /* data */ | ||
}; | ||
|
||
/* machine independent tags */ | ||
|
||
#define BI_LAST 0x0000 /* last record */ | ||
#define BI_MACHTYPE 0x0001 /* machine type (u_long) */ | ||
#define BI_CPUTYPE 0x0002 /* cpu type (u_long) */ | ||
#define BI_FPUTYPE 0x0003 /* fpu type (u_long) */ | ||
#define BI_MMUTYPE 0x0004 /* mmu type (u_long) */ | ||
#define BI_MEMCHUNK 0x0005 /* memory chunk address and size */ | ||
/* (struct mem_info) */ | ||
#define BI_RAMDISK 0x0006 /* ramdisk address and size */ | ||
/* (struct mem_info) */ | ||
#define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */ | ||
/* (string) */ | ||
|
||
/* Macintosh-specific tags (all u_long) */ | ||
|
||
#define BI_MAC_MODEL 0x8000 /* Mac Gestalt ID (model type) */ | ||
#define BI_MAC_VADDR 0x8001 /* Mac video base address */ | ||
#define BI_MAC_VDEPTH 0x8002 /* Mac video depth */ | ||
#define BI_MAC_VROW 0x8003 /* Mac video rowbytes */ | ||
#define BI_MAC_VDIM 0x8004 /* Mac video dimensions */ | ||
#define BI_MAC_VLOGICAL 0x8005 /* Mac video logical base */ | ||
#define BI_MAC_SCCBASE 0x8006 /* Mac SCC base address */ | ||
#define BI_MAC_BTIME 0x8007 /* Mac boot time */ | ||
#define BI_MAC_GMTBIAS 0x8008 /* Mac GMT timezone offset */ | ||
#define BI_MAC_MEMSIZE 0x8009 /* Mac RAM size (sanity check) */ | ||
#define BI_MAC_CPUID 0x800a /* Mac CPU type (sanity check) */ | ||
#define BI_MAC_ROMBASE 0x800b /* Mac system ROM base address */ | ||
|
||
/* Macintosh hardware profile data */ | ||
|
||
#define BI_MAC_VIA1BASE 0x8010 /* Mac VIA1 base address (always present) */ | ||
#define BI_MAC_VIA2BASE 0x8011 /* Mac VIA2 base address (type varies) */ | ||
#define BI_MAC_VIA2TYPE 0x8012 /* Mac VIA2 type (VIA, RBV, OSS) */ | ||
#define BI_MAC_ADBTYPE 0x8013 /* Mac ADB interface type */ | ||
#define BI_MAC_ASCBASE 0x8014 /* Mac Apple Sound Chip base address */ | ||
#define BI_MAC_SCSI5380 0x8015 /* Mac NCR 5380 SCSI (base address, multi) */ | ||
#define BI_MAC_SCSIDMA 0x8016 /* Mac SCSI DMA (base address) */ | ||
#define BI_MAC_SCSI5396 0x8017 /* Mac NCR 53C96 SCSI (base address, multi) */ | ||
#define BI_MAC_IDETYPE 0x8018 /* Mac IDE interface type */ | ||
#define BI_MAC_IDEBASE 0x8019 /* Mac IDE interface base address */ | ||
#define BI_MAC_NUBUS 0x801a /* Mac Nubus type (none, regular, pseudo) */ | ||
#define BI_MAC_SLOTMASK 0x801b /* Mac Nubus slots present */ | ||
#define BI_MAC_SCCTYPE 0x801c /* Mac SCC serial type (normal, IOP) */ | ||
#define BI_MAC_ETHTYPE 0x801d /* Mac builtin ethernet type (Sonic, MACE */ | ||
#define BI_MAC_ETHBASE 0x801e /* Mac builtin ethernet base address */ | ||
#define BI_MAC_PMU 0x801f /* Mac power management / poweroff hardware */ | ||
#define BI_MAC_IOP_SWIM 0x8020 /* Mac SWIM floppy IOP */ | ||
#define BI_MAC_IOP_ADB 0x8021 /* Mac ADB IOP */ | ||
|
||
#define BOOTINFO0(as, base, id) \ | ||
do { \ | ||
stw_phys(as, base, id); \ | ||
base += 2; \ | ||
stw_phys(as, base, sizeof(struct bi_record)); \ | ||
base += 2; \ | ||
} while (0) | ||
|
||
#define BOOTINFO1(as, base, id, value) \ | ||
do { \ | ||
stw_phys(as, base, id); \ | ||
base += 2; \ | ||
stw_phys(as, base, sizeof(struct bi_record) + 4); \ | ||
base += 2; \ | ||
stl_phys(as, base, value); \ | ||
base += 4; \ | ||
} while (0) | ||
|
||
#define BOOTINFO2(as, base, id, value1, value2) \ | ||
do { \ | ||
stw_phys(as, base, id); \ | ||
base += 2; \ | ||
stw_phys(as, base, sizeof(struct bi_record) + 8); \ | ||
base += 2; \ | ||
stl_phys(as, base, value1); \ | ||
base += 4; \ | ||
stl_phys(as, base, value2); \ | ||
base += 4; \ | ||
} while (0) | ||
|
||
#define BOOTINFOSTR(as, base, id, string) \ | ||
do { \ | ||
int i; \ | ||
stw_phys(as, base, id); \ | ||
base += 2; \ | ||
stw_phys(as, base, \ | ||
(sizeof(struct bi_record) + strlen(string) + 2) & ~1); \ | ||
base += 2; \ | ||
for (i = 0; string[i]; i++) { \ | ||
stb_phys(as, base++, string[i]); \ | ||
} \ | ||
stb_phys(as, base++, 0); \ | ||
base = (parameters_base + 1) & ~1; \ | ||
} while (0) | ||
#endif |
Oops, something went wrong.