6
#include "libopenbios/bindings.h"
7
#include "arch/common/nvram.h"
8
#include "libc/diskio.h"
9
#include "libc/vsprintf.h"
10
#include "libopenbios/initprogram.h"
11
#include "libopenbios/sys_info.h"
14
uint64_t kernel_image;
16
uint64_t qemu_cmdline;
17
uint64_t cmdline_size;
20
extern int sparc64_of_client_interface( int *params );
22
/* ( path len -- path len ) */
28
/* Copy the incoming path */
30
path = pop_fstr_copy();
32
/* Boot preloaded kernel */
34
void (*entry)(unsigned long p1, unsigned long p2, unsigned long p3,
35
unsigned long p4, unsigned long p5);
37
printk("[sparc64] Kernel already loaded\n");
38
entry = (void *) (unsigned long)kernel_image;
39
entry(0, 0, 0, 0, (unsigned long)&sparc64_of_client_interface);
42
/* Invoke Linux directly -- probably not supported */
44
/* No path specified, so grab defaults from /chosen */
49
fword("get-package-property");
51
/* Update our local copy of path as well as the one on the stack */
53
path = pop_fstr_copy();
57
param = strchr(path, ' ');
61
} else if (cmdline_size) {
62
param = (char *)qemu_cmdline;
64
push_str("boot-args");
68
fword("get-package-property");
70
param = pop_fstr_copy();
73
/* Invoke platform-specific Linux loader */
74
linux_load(&sys_info, path, param);