On Thu, Mar 28, 2013 at 7:20 PM, Mark Cave-Ayland mark.cave-ayland@ilande.co.uk wrote:
On 22/03/13 05:19, Rob Landley wrote:
If I do this:
qemu-system-sparc -nographic -no-reboot -kernel image -hda hda.sqf -append 'root=/dev/sda rw init=/sbin/init.sh panic=1 PATH=/usr/distcc:/bin:/sbin console=ttyS0 HOST=sparc CPUS=1 DISTCC_HOSTS=10.0.2.2:31322/1 FTP_SERVER=10.0.2.2 FTP_PORT=31307 NATIVE_BUILD=lfs-bootstrap ' -hdb hdb.img -hdc lfs-bootstrap.hdc -m 256
qemu goes:
^[[H^[[JConfiguration device id QEMU version 1 machine id 32 CPUs: 1 x FMI,MB86904 Unhandled Exception 0x00000007 PC = 0xffd07d28 NPC = 0xffd07d2c Stopping execution
And then hangs. I've never figured out why it clears the screen first (none of the other targets do), but I _have_ figured out that the unhandled exception is "kernel command line too long". Because 197 bytes is just too much data for Sparc to cope with.
This is actually a bug in OpenBIOS which declares the command line storage like this:
static void arch_init( void ) { static char cmdline[128];
.... kernel_cmdline = (const char *)
fw_cfg_read_i32(FW_CFG_KERNEL_CMDLINE); if (kernel_cmdline) { size = strlen(kernel_cmdline); memcpy(cmdline, kernel_cmdline, size); obp_arg.argv[1] = cmdline; } cmdline[size] = '\0';
....
}
Would increasing it to 256 bytes be enough? I can't say I've ever come across command lines in a normal environment with more than about 80 characters, but I don't see an issue with increasing it.
Isn't strdup() (or memory allocation subsystem) available at that time?
ATB,
Mark.
-- OpenBIOS http://openbios.org/ Mailinglist: http://lists.openbios.org/mailman/listinfo Free your System - May the Forth be with you