[OpenBIOS] r137 - openbios-devel/arch/sparc32
svn at openbios.org
svn at openbios.org
Tue May 1 16:14:17 CEST 2007
Author: blueswirl
Date: 2007-05-01 16:14:17 +0200 (Tue, 01 May 2007)
New Revision: 137
Modified:
openbios-devel/arch/sparc32/boot.c
Log:
Use nvram boot-args and boot-device variables
Modified: openbios-devel/arch/sparc32/boot.c
===================================================================
--- openbios-devel/arch/sparc32/boot.c 2007-05-01 14:12:34 UTC (rev 136)
+++ openbios-devel/arch/sparc32/boot.c 2007-05-01 14:14:17 UTC (rev 137)
@@ -34,31 +34,42 @@
const void *romvec;
if(!path) {
- switch(boot_device) {
- case 'a':
- path = "/obio/SUNW,fdtwo";
- oldpath = "fd()";
+ push_str("boot-device");
+ push_str("/options");
+ fword("(find-dev)");
+ POP();
+ fword("get-package-property");
+ if (!POP()) {
+ path = pop_fstr_copy();
+ oldpath = path;
unit = 0;
- break;
- case 'c':
- path = "disk";
- oldpath = "sd(0,0,0):d";
- unit = 0;
- break;
- default:
- case 'd':
- path = "cdrom";
- // FIXME: hardcoding this looks almost definitely wrong.
- // With sd(0,2,0):b we get to see the solaris kernel though
- //oldpath = "sd(0,2,0):d";
- oldpath = "sd(0,2,0):b";
- unit = 2;
- break;
- case 'n':
- path = "net";
- oldpath = "le()";
- unit = 0;
- break;
+ } else {
+ switch (boot_device) {
+ case 'a':
+ path = "/obio/SUNW,fdtwo";
+ oldpath = "fd()";
+ unit = 0;
+ break;
+ case 'c':
+ path = "disk";
+ oldpath = "sd(0,0,0):d";
+ unit = 0;
+ break;
+ default:
+ case 'd':
+ path = "cdrom";
+ // FIXME: hardcoding this looks almost definitely wrong.
+ // With sd(0,2,0):b we get to see the solaris kernel though
+ //oldpath = "sd(0,2,0):d";
+ oldpath = "sd(0,2,0):b";
+ unit = 2;
+ break;
+ case 'n':
+ path = "net";
+ oldpath = "le()";
+ unit = 0;
+ break;
+ }
}
}
@@ -76,8 +87,17 @@
param++;
} else if (cmdline_size) {
param = (char *)cmdline;
+ } else {
+ push_str("boot-args");
+ push_str("/options");
+ fword("(find-dev)");
+ POP();
+ fword("get-package-property");
+ POP();
+ param = pop_fstr_copy();
+ obp_arg.argv[1] = param;
}
-
+
romvec = init_openprom(qemu_mem_size);
if (kernel_size) {
More information about the OpenBIOS
mailing list