phcoder
22f53a96fd
2009-05-17 Vladimir Serbinenko <phcoder@gmail.com>
...
trampoline for linux on 64-bit platform
* conf/x86_64-efi.rmk (linux_mod_SOURCES): added
loader/i386/efi/linux_trampoline.S
* include/grub/x86_64/efi/loader.h (grub_linux_real_boot): removed
declration
* kern/x86_64/efi/startup.S (grub_linux_real_boot): moved from here
* loader/i386/linux_trampoline.S: moved here
* loader/i386/efi/linux.c (allocate_pages): reserve space for trampoline
(jumpvector): removed
(grub_linux_trampoline_start): new declaration
(grub_linux_trampoline_end): likewise
(grub_linux_boot): use trampoline when on 64-bit platform
* loader/i386/linux.c: likewise
2009-05-17 11:27:08 +00:00
proski
8090fc012a
2009-05-13 Pavel Roskin <proski@gnu.org>
...
* loader/i386/linux.c (allocate_pages): When assigning
real_mode_mem, cast through grub_size_t to fix a warning. The
code already makes sure that the value would fit a pointer.
(grub_linux_setup_video): Cast render_target->data to
grub_size_t to fix a warning.
2009-05-14 03:48:08 +00:00
robertmh
74bfdd2f77
2009-05-04 Robert Millan <rmh.grub@aybabtu.com>
...
* include/grub/i386/linux.h (GRUB_LINUX_VID_MODE_VESA_START): Set
to 0x300.
* loader/i386/linux.c (vga_modes, linux_vesafb_res): Add a few
resolutions.
(linux_vesafb_modes): Add a lot of additional modes to the list (based
on documentation from Wikipedia).
2009-05-04 20:21:33 +00:00
robertmh
7c1d00cdc4
2009-05-04 Robert Millan <rmh.grub@aybabtu.com>
...
* loader/i386/linux.c [GRUB_MACHINE_PCBIOS] (grub_cmd_linux): Fix
build error.
2009-05-04 18:59:12 +00:00
robertmh
b01f05482b
2009-05-04 Robert Millan <rmh.grub@aybabtu.com>
...
* loader/i386/linux.c (grub_cmd_linux): Make "vga=" compatibility
parameter only available on BIOS.
2009-05-04 18:40:33 +00:00
robertmh
112972a96d
2009-05-04 Robert Millan <rmh.grub@aybabtu.com>
...
* loader/i386/linux.c (GRUB_ASSUME_LINUX_HAS_FB_SUPPORT): New macro.
(grub_linux_boot): Don't check for `linux_vesafb_modes' bounds (this
is done by grub_cmd_linux() now).
[! GRUB_ASSUME_LINUX_HAS_FB_SUPPORT]: If "vga=" parameter wasn't set,
restore video to text mode.
(grub_cmd_linux): Default `vid_mode' initialization to 0, which
indicates lack of "vga=" parameter. "vga=0" is mapped to
`GRUB_LINUX_VID_MODE_NORMAL'.
2009-05-04 18:04:09 +00:00
phcoder
09d842b9c6
2009-05-02 Vladimir Serbinenko <phcoder@gmail.com>
...
Mmap services
* loader/i386/efi/linux.c (grub_linux_boot): use grub_mmap_iterate
* loader/i386/linux.c (find_mmap_size): likewise
(allocate_pages): likewise
* loader/i386/multiboot.c (grub_get_multiboot_mmap_len): likewise
(grub_fill_multiboot_mmap): likewise
(grub_multiboot): use grub_mmap_get_lower and grub_mmap_get_upper
* loader/i386/pc/linux.c (grub_cmd_linux): use grub_mmap_get_lower
* include/grub/i386/bsd.h (OPENBSD_MMAP_AVAILABLE): new definition
(OPENBSD_MMAP_RESERVED): likewise
* include/grub/i386/pc/memory.h: include grub/memory.h
(grub_lower_mem): removed
(grub_upper_mem): likewise
(GRUB_MACHINE_MEMORY_ACPI): new definition
(GRUB_MACHINE_MEMORY_NVS): likewise
(GRUB_MACHINE_MEMORY_MAX_TYPE): likewise
(GRUB_MACHINE_MEMORY_HOLE): likewise
(grub_machine_mmap_register): likewise
(grub_machine_mmap_unregister): likewise
(grub_machine_get_upper): likewise
(grub_machine_get_lower): likewise
(grub_machine_get_post64): likewise
* include/grub/i386/efi/memory.h: new file
* include/grub/x86_64/efi/memory.h: likewise
* include/grub/efi/memory.h: likewise
* conf/i386-pc.rmk (pkglib_MODULES): added mmap.mod
(mmap_mod_SOURCES): new variable
(mmap_mod_LDFLAGS): likewise
(mmap_mod_ASFLAGS): likewise
* conf/i386-coreboot.rmk: likewise
* conf/i386-ieee1275.rmk: likewise
* conf/i386-efi.rmk: likewise
* conf/x86_64-efi.rmk: likewise
* include/grub/types.h (UINT_TO_PTR): new macro
(PTR_TO_UINT32): likewise
(PTR_TO_UINT64): likewise
* include/grub/memory.h: new file
* mmap/i386/pc/mmap.c: likewise
* mmap/i386/pc/mmap_helper.S: likewise
* mmap/i386/uppermem.c: likewise
* mmap/mmap.c: likewise
* mmap/efi/mmap.c: likewise
* kern/i386/coreboot/init.c (grub_machine_init): don't use
grub_upper_mem
* kern/i386/pc/init.c (grub_lower_mem): removed variable
(grub_upper_mem): likewise
(grub_machine_init): don't use grub_upper_mem,
make grub_lower_mem local
* loader/i386/bsd.c (grub_openbsd_boot): use grub_mmap_get_lower,
grub_mmap_iterate and grub_mmap_get_upper
(grub_netbsd_boot): use grub_mmap_get_lower and grub_mmap_get_upper
2009-05-02 21:46:34 +00:00
robertmh
6c67de152c
2009-05-02 Robert Millan <rmh.grub@aybabtu.com>
...
* normal/menu_text.c (grub_wait_after_message): Print a newline
after waiting for user input.
* loader/i386/linux.c: Include `<grub/normal.h>'.
(grub_cmd_linux): Improve the error message about `ask' mode, by
waiting for user input so it's not missed (we can do this, since
user requested interaction).
2009-05-02 15:24:28 +00:00
robertmh
cba416eb0d
2009-04-13 Robert Millan <rmh@aybabtu.com>
...
* loader/i386/linux.c (grub_cmd_linux): Don't pass `vga=ask' parameter
to Linux, simply abort telling the user it's no longer supported.
2009-04-13 14:38:10 +00:00
proski
1007d1f562
2009-04-06 Pavel Roskin <proski@gnu.org>
...
* include/grub/misc.h (ARRAY_SIZE): New macro.
* include/grub/i386/linux.h (GRUB_LINUX_VID_MODE_VESA_START):
New macro.
* loader/i386/linux.c (allocate_pages): Use free_pages().
(grub_linux_unload): Don't use free_pages().
(grub_linux_boot): Prevent accessing linux_vesafb_modes with a
wrong index. Treat all other modes as text modes.
(grub_cmd_linux): Initialize vid_mode unconditionally to
GRUB_LINUX_VID_MODE_NORMAL. Recognize and support "vga=ask".
2009-04-07 00:48:57 +00:00
robertmh
7a6bf9f220
2009-04-03 Robert Millan <rmh@aybabtu.com>
...
* loader/i386/linux.c (grub_linux_setup_video): Fill
`params->{red,green,blue,reserved}_{mask_size,field_pos}' with
values from `mode info' structure instead of hardcoded
values.
2009-04-03 20:03:39 +00:00
robertmh
92f33540d8
2009-03-30 Robert Millan <rmh@aybabtu.com>
...
* loader/i386/linux.c (grub_cmd_linux): Check for zImage before
checking for abi version. Improve error messages on BIOS to notify
user about `linux16' command.
2009-03-30 22:22:31 +00:00
robertmh
9c323f0961
2009-03-29 Robert Millan <rmh@aybabtu.com>
...
* loader/i386/linux.c (grub_cmd_linux): Parse "vga=" parameter and
set `vid_mode' accordingly.
(grub_linux_boot): Process `vid_mode' and set video mode.
2009-03-29 19:52:35 +00:00
robertmh
a9368fd30c
2009-03-28 Robert Millan <rmh@aybabtu.com>
...
* conf/i386-pc.rmk (pkglib_MODULES): Add `linux16.mod'.
(linux16_mod_SOURCES, linux16_mod_CFLAGS, linux16_mod_LDFLAGS): New
variables. Use 16-bit loader.
(linux_mod_SOURCES, linux_mod_CFLAGS, linux_mod_LDFLAGS): Use 32-bit
loader.
* kern/i386/loader.S (grub_linux_boot): Rename to ...
(grub_linux16_boot): ... this. Update all users.
* loader/i386/linux.c (grub_linux32_boot): Rename to ...
(grub_linux_boot): ... this. Update all users.
* loader/i386/pc/linux.c (GRUB_MOD_INIT(linux)): Rename to ...
(GRUB_MOD_INIT(linux16)): ... this. Rename `linux' and `initrd'
commands to `linux16' and `initrd16'.
(GRUB_MOD_FINI(linux)): Rename to ...
(GRUB_MOD_FINI(linux16)): ... this.
2009-03-28 12:53:16 +00:00
bean
b1b797cb1b
2009-03-21 Bean <bean123ch@gmail.com>
...
* commands/blocklist.c: Add include file <grub/command.h>, remove
<grub/normal.h> and <grub/arg.h>.
(grub_cmd_blocklist): Use the new command interface.
(GRUB_MOD_INIT): Likewise.
(GRUB_MOD_FINI): Likewise.
* commands/boot.c: Likewise.
* commands/cat.c: Likewise.
* commands/cmp.c: Likewise.
* commands/configfile.c: Likewise.
* commands/crc.c: Likewise.
* commands/echo.c: Likewise.
* commands/halt.c: Likewise.
* commands/handler.c: Likewise.
* commands/hdparm.c: Likewise.
* commands/help.c: Likewise.
* commands/hexdump.c: Likewise.
* commands/loadenv.c: Likewise.
* commands/ls.c: Likewise.
* commands/lsmmap.c: Likewise.
* commands/lspci.c: Likewise.
* commands/loadenv.c: Likewise.
* commands/read.c: Likewise.
* commands/reboot.c: Likewise.
* commands/search.c: Likewise.
* commands/sleep.c: Likewise.
* commands/test.c: Likewise.
* commands/usbtest.c: Likewise.
* commands/videotest.c: Likewise.
* commands/i386/cpuid.c: Likewise.
* commands/i386/pc/halt.c: Likewise.
* commands/i386/pc/play.c: Likewise.
* commands/i386/pc/pxecmd.c: Likewise.
* commands/i386/pc/vbeinfo.c: Likewise.
* commands/i386/pc/vbetest.c: Likewise.
* commands/ieee1275/suspend.c: Likewise.
* disk/loopback.c: Likewise.
* font/font_cmd.c: Likewise.
* hello/hello.c: Likewise.
* loader/efi/appleloader.c: Likewise.
* loader/efi/chainloader.c: Likewise.
* loader/i386/bsd.c: Likewise.
* loader/i386/efi/linux.c: Likewise.
* loader/i386/ieee1275/linux.c: Likewise.
* loader/i386/linux.c: Likewise.
* loader/i386/pc/chainloader.c: Likewise.
* loader/i386/pc/linux.c: Likewise.
* loader/powerpc/ieee1275/linux.c: Likewise.
* loader/multiboot_loader.c: Likewise.
* term/gfxterm.c: Likewise.
* term/i386/pc/serial.c: Likewise.
* term/terminfo.c: Likewise.
* term/i386/pc/vesafb.c: Removed <grub/arg.h>.
* term/i386/pc/vga.c: Likewise.
* video/readers/jpeg.c: Likewise.
* video/readers/png.c: Likewise.
* video/readers/tga.c: Likewise.
* util/grub-fstest (cmd_loopback): Removed.
(cmd_blocklist): Likewise.
(cmd_ls): Likewise.
(grub_register_command): Likewise.
(grub_unregister_command): Likewise.
(execute_command): Use grub_command_find to locate command and execute
it.
* include/grub/efi/chainloader.h: Removed.
* loader/efi/chainloader_normal.c: Likewise.
* loader/i386/bsd_normal.c: Likewise.
* loader/i386/pc/chainloader_normal.c: Likewise.
* loader/i386/pc/multiboot_normal.c: Likewise.
* loader/linux_normal.c: Likewise.
* loader/multiboot_loader_normal.c: Likewise.
* loader/powerpc/ieee1275/linux_normal.c: Likewise.
* gencmdlist.sh: Scan new registration command grub_register_extcmd
and grub_register_command_p1.
* conf/common.rmk (grub_fstest_SOURCES): Add kern/list.c,
kern/command.c, lib/arg.c and commands/extcmd.c.
(pkglib_MODULES): Remove boot.mod, and minicmd.mod and extcmd.mod.
(minicmd_mod_SOURCES): New variable.
(minicmd_mod_CFLAGS): Likewise.
(minicmd_mod_LDFLAGS): Likewise.
(extcmd_mod_SOURCES): Likewise.
(extcmd_mod_CFLAGS): Likewise.
(extcmd_mod_LDFLAGS): Likewise.
(boot_mod_SOURCES): Removed.
(boot_mod_CFLAGS): Likewise.
(boot_mod_LDFLAGS): Likewise.
* conf/i386-pc.rmk (kernel_img_SOURCES): Add kern/command.c and
kern/corecmd.c.
(kernel_img_HEADERS): Add command.h.
(grub_emu_SOURCES): Remove commands/boot.c and normal/arg.c, add
commands/minicmd.c, kern/command.c, kern/corecmd.c, commands/extcmd.c
and lib/arg.c.
(pkglib_MODULES): Change _linux.mod, _chain.mod, _bsd.mod and
_multiboot.mod as linux.mod, chain.mod, bsd.mod and multiboot.mod,
remove the corresponding normal mode command.
(normal_mod_SOURCES): Remove normal/arg.c.
* conf/i386-coreboot.rmk: Likewise.
* conf/i386-efi.rmk: Likewise.
* conf/i386-ieee1275.rmk: Likewise.
* conf/powerpc-ieee1275.rmk: Likewise.
* conf/x86_64-efi.rmk: Likewise.
* include/grub/arg.h: Move from here ...
* include/grub/lib/arg.h: ... to here.
* normal/arg.c: Move from here ...
* lib/arg.c: ... to here.
* commands/extcmd.c: New file.
* commands/minicmd.c: Likewise.
* include/grub/command.h: Likewise.
* include/grub/extcmd.h: Likewise.
* kern/command.c: Likewise.
* kern/corecmd.c: Likewise.
* kern/list.c (grub_list_iterate): Return int instead of void.
(grub_list_insert): New function.
(grub_prio_list_insert): Likewise.
* kern/rescue.c (grub_rescue_command): Removed.
(grub_rescue_command_list): Likewise.
(grub_rescue_register_command): Likewise.
(grub_rescue_unregister_command): Likewise.
(grub_rescue_cmd_boot): Move to minicmd.c
(grub_rescue_cmd_help): Likewise.
(grub_rescue_cmd_info): Likewise.
(grub_rescue_cmd_boot): Likewise.
(grub_rescue_cmd_testload): Likewise.
(grub_rescue_cmd_dump): Likewise.
(grub_rescue_cmd_rmmod): Likewise.
(grub_rescue_cmd_lsmod): Likewise.
(grub_rescue_cmd_exit): Likewise.
(grub_rescue_print_devices): Moved to corecmd.c.
(grub_rescue_print_files): Likewise.
(grub_rescue_cmd_ls): Likewise.
(grub_rescue_cmd_insmod): Likewise.
(grub_rescue_cmd_set): Likewise.
(grub_rescue_cmd_unset): Likewise.
(attemp_normal_mode): Use grub_command_find to get normal module.
(grub_enter_rescue_mode): Use grub_register_core_commands to register
commands, remove grub_rescue_regiter_command calls.
* normal/command.c (grub_regiser_command): Removed.
(grub_unregister_command): Likewise.
(grub_command_find): Likewise.
(grub_iterate_commands): Likewise.
(rescue_command): Likewise.
(export_command): Moved to corecmd.c.
(set_command): Removed.
(unset_command): Likewise.
(insmod_command): Likewise.
(rmmod_command): Likewise.
(lsmod_command): Likewise.
(grub_command_init): Likewise.
* normal/completion.c (iterate_command): Use cmd->prio to check for
active command.
(complete_arguments): Use grub_extcmd_t structure to find options.
(grub_normal_do_completion): Change function grub_iterate_commands to
grub_command_iterate.
* normal/execute.c (grub_script_execute_cmd): No need to parse
argument here.
* normal/main.c (grub_dyncmd_dispatcher): New function.
(read_command_list): Register unload commands as dyncmd.
(grub_cmd_normal): Use new command interface, register rescue,
unregister normal at entry, register normal, unregister rescue at exit.
* include/grub/list.h (grub_list_test_t): New type.
(grub_list_iterate): Return int instead of void.
(grub_list_insert): New function.
(GRUB_AS_NAMED_LIST_P): New macro.
(GRUB_AS_PRIO_LIST): Likewise.
(GRUB_AS_PRIO_LIST_P): Likewise.
(GRUB_PRIO_LIST_PRIO_MASK): New constant.
(GRUB_PRIO_LIST_FLAG_ACTIVE): Likewise.
(grub_prio_list): New structure.
(grub_prio_list_insert): New function.
(grub_prio_list_remove): New inline function.
* include/grub/normal.h: Remove <grub/arg.h>, add <grub/command.h>.
(GRUB_COMMAND_FLAG_CMDLINE): Moved to command.h.
(GRUB_COMMAND_FLAG_MENU): Likewise.
(GRUB_COMMAND_FLAG_BOTH): Likewise.
(GRUB_COMMAND_FLAG_TITLE): Likewise.
(GRUB_COMMAND_FLAG_NO_ECHO): Likewise.
(GRUB_COMMAND_FLAG_NO_ARG_PARSE): Removed.
(GRUB_COMMAND_FLAG_NOT_LOADED): Likewise.
(grub_command): Likewise.
(grub_register_command): Likewise.
(grub_command_find): Likewise.
(grub_iterate_commands): Likewise.
(grub_command_init): Likewise.
(grub_arg_parse): Likewise.
(grub_arg_show_help): Likewise.
* include/grub/rescue.h (grub_rescue_register_command): Removed.
(grub_rescue_unregister_command): Likewise.
* include/grub/i386/bsd.h: Remove grub_rescue_cmd_freebsd,
grub_rescue_cmd_openbsd, grub_rescue_cmd_netbsd,
grub_rescue_cmd_freebsd_loadenv and grub_rescue_cmd_freebsd_module.
* include/grub/i386/efi/loader.h: Remove grub_rescue_cmd_linux and
grub_rescue_cmd_initrd.
* include/grub/i386/loader.h: Likewise.
* include/grub/x86_64/loader.h: Likewise.
* include/grub/i386/pc/chainloader.h: Remove grub_chainloader_cmd.
2009-03-21 08:39:59 +00:00
robertmh
14aad8072c
2009-03-18 Robert Millan <rmh@aybabtu.com>
...
* loader/i386/linux.c: Include `<grub/video.h>' and
`<grub/i386/pc/vbe.h>'..
(grub_linux_setup_video): New function. Loosely based on the EFI one.
(grub_linux32_boot): Attempt to configure video settings with
grub_linux_setup_video().
(grub_rescue_cmd_linux): Set noreturn=0 in grub_loader_set, in order
to avoid grub_console_fini() which would step out of graphical mode
unconditionally.
2009-03-18 10:21:28 +00:00
robertmh
aa9f3bffbd
2009-03-08 Robert Millan <rmh@aybabtu.com>
...
Make loader/i386/linux.c usable on i386-pc again.
* kern/i386/pc/init.c (grub_machine_init): Disable addition of low
memory to heap.
* loader/i386/linux.c [GRUB_MACHINE_PCBIOS] (allocate_pages): Remove
`#error' stanza.
2009-03-08 12:46:27 +00:00
robertmh
40f9faa4de
Move comment text to `#error' stanza.
2008-11-20 20:25:30 +00:00
robertmh
e94045a110
* loader/i386/linux.c (allocate_pages): Fix a warning.
2008-11-20 20:22:04 +00:00
robertmh
9290711060
* loader/i386/linux.c (grub_rescue_cmd_initrd): Implement a few needed
...
constraints to initrd allocation (based on code from
loader/i386/pc/linux.c). Without them, initrd was allocated too high
for Linux to find it.
2008-11-19 12:11:44 +00:00
robertmh
2f2a344257
Add #error instance with comment to explain why this
...
loader isn't currently usable on PC/BIOS.
2008-11-14 20:18:07 +00:00
robertmh
10fc3eb9a7
2008-11-14 Robert Millan <rmh@aybabtu.com>
...
* include/grub/i386/coreboot/memory.h (GRUB_MEMORY_MACHINE_LOWER_SIZE):
Redefine to match with GRUB_MEMORY_MACHINE_UPPER_START (0x100000). We
don't want to mess with lower memory, because it is used in the Linux
loader.
* loader/i386/linux.c (allocate_pages): Allocate `real_mode_mem' in
an appropiate place in lower memory, between 0x10000 and 0x90000,
like loader/i386/efi/linux.c does. Linux often panics if real_mode_mem
is in our heap (probably as a result of it being corrupted during
decompression).
2008-11-14 19:04:26 +00:00
robertmh
c9baafe713
2008-08-21 Robert Millan <rmh@aybabtu.com>
...
* loader/i386/linux.c: New file. Implements generic 32-bit Linux
loader.
* conf/i386-coreboot.rmk (_linux_mod_SOURCES): Replace
`loader/i386/pc/linux.c' with `loader/i386/linux.c'.
2008-08-21 13:18:07 +00:00