Following on from the previous work, this patchset gets tantalisingly close to bringing up a 64-bit Milax (OpenSolaris) kernel under qemu-system-sparc64:
$ ./qemu-system-sparc64 -bios openbios-builtin.elf.nostrip -cdrom milax032sparc.iso -nographic -boot d -m 256 OpenBIOS for Sparc64 Configuration device id QEMU version 1 machine id 0 kernel cmdline CPUs: 1 x SUNW,UltraSPARC-IIi UUID: 00000000-0000-0000-0000-000000000000 Welcome to OpenBIOS v1.1 built on Oct 23 2016 13:36 Type 'help' for detailed information Trying cdrom:f... Not a bootable ELF image Not a bootable a.out image
Loading FCode image... Loaded 7084 bytes entry point is 0x4000 Evaluating FCode... Evaluating FCode... Ignoring failed claim for va 1000000 memsz bf34e! Ignoring failed claim for va 1402000 memsz 303b3! Ignoring failed claim for va 1800000 memsz 60a30! SunOS Release 5.11 Version MilaX_0.3.2 64-bit Copyright 1983-2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. could not find debugger-vocabulary-hook>threads:interpret: exception -13 caught interpret \ ident "%Z%%M% %I% %E% SMI" \ Copyright 2005 Sun Microsystems, Inc. All rights reserved. \ Use is subject to license terms. \ \ CDDL HEADER START \ \ The contents of this file are subject to the terms of the \ Common Development and Distribution License, Version 1.0 only \ (the "License"). You may not use this file except in compliance \ with the License. \ \ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE \ or http://www.opensolaris.org/os/licensing. \ See the License for unix-tte:interpret: exception -13 caught interpret ' unix-tte is va>tte-data failed with error ffffffffffffffed WARNING: consconfig: cannot find driver for screen device /pci@1fe,0/QEMU,VGA@2 Remounting root read/write Probing for device nodes ... WARNING: pcipsy0: unable to map reg entry 1
Preparing live image for use WARNING: pcipsy0: unable to map reg entry 1
WARNING: pcipsy0: unable to map reg entry 1
Hostname: milax Requesting System Maintenance Mode (See /lib/svc/share/README for more information.) Console login service(s) cannot run
Root password for system maintenance (control-d to bypass):
Sadly at this point the console (and eventually QEMU) lock up hard which suggests an emulation bug hiding away somewhere, and I do occasionally see intermittent kernel panics on boot.
Having said that, this is still a significant milestone :)
Signed-off-by: Mark Cave-Ayland mark.cave-ayland@ilande.co.uk
Mark Cave-Ayland (9): SPARC64: add %tba to saved state context SPARC64: make sure globals are stored in the CPU context during I/D MMU traps SPARC64: comment out the context switch debug message SPARC64: increase Forth machine memory to 192K SPARC64: add support for kmdb kernel debugger SPARC64: add spacec@, spacew@, spacel@ and spacex@ Forth words SPARC64: set up small iomem region for memory-mapped devices SPARC64: memory map mk48t59 RTC and store its address in the device tree SPARC64: ensure the E (effect) bit is set for PROM TTE entries
arch/sparc64/boot.h | 1 + arch/sparc64/call-client.S | 12 --- arch/sparc64/context.c | 2 +- arch/sparc64/context.h | 4 +- arch/sparc64/cpu.fs | 11 ++- arch/sparc64/cpustate.h | 13 ++- arch/sparc64/entry.S | 9 +- arch/sparc64/ldscript | 2 +- arch/sparc64/lib.c | 7 ++ arch/sparc64/ofmem_sparc64.c | 8 +- arch/sparc64/openbios.c | 144 ++++++++++++++++++++++++++++++- arch/sparc64/spitfire.h | 1 + arch/sparc64/vectors.S | 196 +++++++++++++++++++++++++++++++++++++++++- drivers/pci.c | 14 +++ 14 files changed, 387 insertions(+), 37 deletions(-)