I have begun doing work with OpenBIOS. I was wondering if it is
possible to compile OpenBIOS for PowerPC on Mac OS X? If not, what
Linux distro should I use? Any advice would really help.
Hi all,
So given that the Fcode evaluator is sorted for Solaris 10, I thought
I'd try my original Solaris 9 disk image again and was surprised to find
that it didn't boot.
Further investigation seems to show that strangely encoded device names
are being passed into cif-open which is failing:
: get-file ( 6000 ffe35870 27 )
00000000ffe36378: fname>devname$
3 > 2dup type /platform/OpenBiosTeam,OpenBIOS/ufsboot ok
3 > resume ok
( 6000 ffe35870 27 )
00000000ffe36378: fname>devname$ ( 6000 ffe35ee8 2f )
00000000ffe36380: ufs-fopen
3 > 2dup type cdrom:a,|platform|OpenBiosTeam,OpenBIOS|ufsboot ok
3 > resume ok
( 6000 ffe35ee8 2f )
00000000ffe36380: ufs-fopen
: ufs-fopen ( 6000 ffe35ee8 2f )
00000000ffe360e8: drop ( 6000 ffe35ee8 )
00000000ffe360f0: cif-open ( 6000 0 )
00000000ffe360f8: (semis)
: get-file ( 6000 ffe35870 17 )
00000000ffe36378: fname>devname$
3 > 2dup type /platform/sun4u/ufsboot ok
3 > resume ok
( 6000 ffe35870 17 )
00000000ffe36378: fname>devname$ ( 6000 ffe35ee8 1f )
00000000ffe36380: ufs-fopen
3 > 2dup type cdrom:a,|platform|sun4u|ufsboot ok
3 > resume ok
( 6000 ffe35ee8 1f )
00000000ffe36380: ufs-fopen
: ufs-fopen ( 6000 ffe35ee8 1f )
00000000ffe360e8: drop ( 6000 ffe35ee8 )
00000000ffe360f0: cif-open OFMEM: ofmem_claim_virt virt=ffffffffffffffff
size=0000000000000200 align=0000000000000001
( 6000 0 )
00000000ffe360f8: (semis)
It looks as if a special type of device-specifier is being passed into
cif-open consisting of a device and argument, a comma, then the actual
filename required with /s replaced by |s.
Is this some kind of special syntax that needs to be taught to the dev
word and/or cif-open words?
ATB,
Mark.
--
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs
Hi,
Trying to build OpenBIOS natively on sparc32 or sparc64 host, I get the following error:
LINK openbios-unix
libopenbios.a(load.o): In function `load':
/home/aurel32/openbios-devel/obj-sparc32/../libopenbios/load.c:41: undefined reference to `sys_info'
/home/aurel32/openbios-devel/obj-sparc32/../libopenbios/load.c:41: undefined reference to `sys_info'
It seems only sparc32/64 have CONFIG_LOADER_AOUT. The sys_info variable is defined in
arch/sparc{32,64}/boot.c, but this file is not used to build openbios-unix. Any new what would be
a real fix here, besides disabling CONFIG_LOADER_AOUT?
Thanks,
Aurelien
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien(a)aurel32.net http://www.aurel32.net
Author: mcayland
Date: Sun Aug 1 00:48:10 2010
New Revision: 825
URL: http://tracker.coreboot.org/trac/openbios/changeset/825
Log:
Fix the SCSI block driver so that it doesn't leave an extra item on the stack when its open method is called.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Modified:
trunk/openbios-devel/drivers/esp.c
Modified: trunk/openbios-devel/drivers/esp.c
==============================================================================
--- trunk/openbios-devel/drivers/esp.c Sun Aug 1 00:46:48 2010 (r824)
+++ trunk/openbios-devel/drivers/esp.c Sun Aug 1 00:48:10 2010 (r825)
@@ -268,7 +268,7 @@
fword("my-unit");
id = POP();
- //POP(); // unit id is 2 ints but we only need one.
+ POP(); // unit id is 2 ints but we only need one.
*sd = &global_esp->sd[id];
#ifdef CONFIG_DEBUG_ESP
Hi all,
I'm currently in the middle of chasing a bug in the Forth open-dev word
and was wondering if anyone can help me out? It only seems to show up on
SPARC32, and only on disk/cdrom devices. What happens is that sometimes
open-dev leaves an extra 1 on the stack which breaks some of my
subsequent code, e.g.
Configuration device id QEMU version 1 machine id 32
UUID: 00000000-0000-0000-0000-000000000000
CPUs: 1 x FMI,MB86904
Welcome to OpenBIOS v1.0 built on Jul 31 2010 15:05
Type 'help' for detailed information
0 > showstack ok
0 > s" ttya" open-dev ok
-24b1f8 < 1 > close-dev ok
0 > s" cdrom" open-dev ok
1 -24aff0 < 2 > close-dev ok
1 < 1 > drop ok
I think that something in the tree layout of SPARC32 is triggering a bug
somewhere in (path-resolution) but I haven't quite managed to grok it
yet. Anyone have any ideas as to what could be causing this?
ATB,
Mark.
--
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063
Sirius Labs: http://www.siriusit.co.uk/labs
Author: mcayland
Date: Sun Jul 25 19:34:13 2010
New Revision: 822
URL: http://tracker.coreboot.org/trac/openbios/changeset/822
Log:
Create a C wrapper around the Forth key word to be used in the debugger instead of calling availchar()/getchar(). Using this
wrapper means that the debugger now works correctly under PPC.
Signed-off-by: Mark Cave-Ayland <mark.cave-ayland(a)siriusit.co.uk>
Modified:
trunk/openbios-devel/kernel/internal.c
Modified: trunk/openbios-devel/kernel/internal.c
==============================================================================
--- trunk/openbios-devel/kernel/internal.c Tue Jul 13 18:41:06 2010 (r821)
+++ trunk/openbios-devel/kernel/internal.c Sun Jul 25 19:34:13 2010 (r822)
@@ -446,6 +446,27 @@
return i;
}
+static
+int getchar_console( void )
+{
+ cell tmp;
+
+ /* Push to the Forth interpreter for console output */
+ tmp = rstackcnt;
+
+ trampoline[1] = findword("key");
+
+ PUSHR(PC);
+ PC = pointer2cell(trampoline);
+
+ while (rstackcnt > tmp) {
+ dbg_interp_printk("getchar_console: NEXT\n");
+ next();
+ }
+
+ return POP();
+}
+
static void
display_dbg_dstack ( void )
{
@@ -567,8 +588,7 @@
return;
/* Otherwise in step mode, prompt for a keypress */
- while (!availchar());
- k = getchar();
+ k = getchar_console();
/* Only proceed if done is true */
while (!done)
@@ -601,8 +621,7 @@
/* Down - mark current word for debug and step into it */
done = add_debug_xt(read_ucell(cell2pointer(PC)));
if (!done) {
- while (!availchar());
- k = getchar();
+ k = getchar_console();
}
break;
@@ -618,8 +637,7 @@
/* Display rstack */
display_dbg_rstack();
done = 0;
- while (!availchar());
- k = getchar();
+ k = getchar_console();
break;
case 'f':
@@ -636,8 +654,7 @@
default:
/* Display debug banner */
printf_console(DEBUG_BANNER);
- while (!availchar());
- k = getchar();
+ k = getchar_console();
}
}
}