From c53f30a204d710b776c22535fa53818043f6e2f1 Mon Sep 17 00:00:00 2001 From: Steffen Winterfeldt Date: Tue, 19 Apr 2011 15:27:26 +0200 Subject: gfxboot: handle INITRD config line Handle case where there is no initrd= option but a separate initrd config line. Signed-off-by: Sebastian Herbszt --- com32/gfxboot/gfxboot.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'com32/gfxboot/gfxboot.c') diff --git a/com32/gfxboot/gfxboot.c b/com32/gfxboot/gfxboot.c index 37499202..9a39e79f 100644 --- a/com32/gfxboot/gfxboot.c +++ b/com32/gfxboot/gfxboot.c @@ -922,11 +922,15 @@ void boot_entry(menu_t *menu_ptr, char *arg) *skip_nonspaces(s) = 0; initrd_arg = s; } + else if(initrd_arg) { + free(s0); + initrd_arg = s0 = strdup(initrd_arg); + } if(initrd_arg) { initrd = initramfs_init(); - while((t = strsep(&s, ","))) { + while((t = strsep(&initrd_arg, ","))) { initrd_buf = load_one(t, &initrd_size); if(!initrd_buf) { -- cgit v1.2.1 From a5d27926e87205e1696e94d9a4200894e1d59c03 Mon Sep 17 00:00:00 2001 From: Steffen Winterfeldt Date: Tue, 19 Apr 2011 15:27:26 +0200 Subject: gfxboot: pass current working dir to gfxboot core Pass current working dir to (and back from) gfxboot core via gfx_config struct. This way I can implement a chdir() in the gfxboot core without the need for additional 16-bit comboot calls. gfxboot may change the directory, so you have to read and apply the current setting in boot() (to read kernel etc. from right location). Signed-off-by: Sebastian Herbszt --- com32/gfxboot/gfxboot.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'com32/gfxboot/gfxboot.c') diff --git a/com32/gfxboot/gfxboot.c b/com32/gfxboot/gfxboot.c index 9a39e79f..35d180a6 100644 --- a/com32/gfxboot/gfxboot.c +++ b/com32/gfxboot/gfxboot.c @@ -102,6 +102,8 @@ typedef struct __attribute__ ((packed)) { // 0: GFX_CB_MENU_INIT accepts 32 bit addresses // 1: knows about xmem_start, xmem_end uint16_t reserved_1; // 62: + uint32_t gfxboot_cwd; // 64: if set, points to current gfxboot working directory relative + // to syslinux working directory } gfx_config_t; @@ -181,6 +183,7 @@ int main(int argc, char **argv) { int menu_index; const union syslinux_derivative_info *sdi; + char working_dir[256]; openconsole(&dev_stdcon_r, &dev_stdcon_w); @@ -224,6 +227,10 @@ int main(int argc, char **argv) return 0; } + if(getcwd(working_dir, sizeof working_dir)) { + gfx_config.gfxboot_cwd = (uint32_t) working_dir; + } + if(gfx_init(argv[1])) { printf("Error setting up gfxboot\n"); if(argc > 2) show_message(argv[2]); @@ -806,6 +813,12 @@ void boot(int index) int i, label_len; unsigned ipapp; const struct syslinux_ipappend_strings *ipappend; + char *gfxboot_cwd = (char *) gfx_config.gfxboot_cwd; + + if(gfxboot_cwd) { + chdir(gfxboot_cwd); + gfx_config.gfxboot_cwd = 0; + } for(menu_ptr = menu; menu_ptr; menu_ptr = menu_ptr->next, index--) { if(!index) break; -- cgit v1.2.1 From 1eb311caecf1452a78013640db828fd40c9055d2 Mon Sep 17 00:00:00 2001 From: Thierry Reding Date: Thu, 31 May 2012 17:41:35 +0200 Subject: com32: Add device tree support This commit adds support for passing a Flattened Device Tree (FDT) blob to the Linux kernel. Signed-off-by: Thierry Reding Signed-off-by: H. Peter Anvin --- com32/gfxboot/gfxboot.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'com32/gfxboot/gfxboot.c') diff --git a/com32/gfxboot/gfxboot.c b/com32/gfxboot/gfxboot.c index 35d180a6..aa05caf8 100644 --- a/com32/gfxboot/gfxboot.c +++ b/com32/gfxboot/gfxboot.c @@ -962,7 +962,7 @@ void boot_entry(menu_t *menu_ptr, char *arg) gfx_done(); - syslinux_boot_linux(kernel, kernel_size, initrd, arg); + syslinux_boot_linux(kernel, kernel_size, initrd, NULL, arg); } -- cgit v1.2.1