mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 06:01:23 +00:00
Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86/boot changes from Ingo Molnar: "Kernel image size reduction and assorted fixes and other small improvements." * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86, doc: Assign a bootloader ID for "Minimal Linux Bootloader" x86, boot: Exclude cmdline.c if you can't use it x86, boot: Exclude early_serial_console.c if can't use it. x86, boot: Removed unused debug flag and set code x86, boot: Switch output functions from command-line flags to conditional compilation x86, boot: Changed error putstr path to match new debug_putstr format x86, boot: Wrap debug printing in a new debug_putstr function x86, boot: Removed quiet flag and switched quiet output to debug flag
This commit is contained in:
commit
3d72b105b0
5 changed files with 44 additions and 27 deletions
|
@ -363,7 +363,8 @@ Protocol: 2.00+
|
||||||
ext_loader_type <- 0x05
|
ext_loader_type <- 0x05
|
||||||
ext_loader_ver <- 0x23
|
ext_loader_ver <- 0x23
|
||||||
|
|
||||||
Assigned boot loader ids:
|
Assigned boot loader ids (hexadecimal):
|
||||||
|
|
||||||
0 LILO (0x00 reserved for pre-2.00 bootloader)
|
0 LILO (0x00 reserved for pre-2.00 bootloader)
|
||||||
1 Loadlin
|
1 Loadlin
|
||||||
2 bootsect-loader (0x20, all other values reserved)
|
2 bootsect-loader (0x20, all other values reserved)
|
||||||
|
@ -378,6 +379,8 @@ Protocol: 2.00+
|
||||||
C Arcturus Networks uCbootloader
|
C Arcturus Networks uCbootloader
|
||||||
E Extended (see ext_loader_type)
|
E Extended (see ext_loader_type)
|
||||||
F Special (0xFF = undefined)
|
F Special (0xFF = undefined)
|
||||||
|
10 Reserved
|
||||||
|
11 Minimal Linux Bootloader <http://sebastian-plotz.blogspot.de>
|
||||||
|
|
||||||
Please contact <hpa@zytor.com> if you need a bootloader ID
|
Please contact <hpa@zytor.com> if you need a bootloader ID
|
||||||
value assigned.
|
value assigned.
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_EARLY_PRINTK
|
||||||
|
|
||||||
static unsigned long fs;
|
static unsigned long fs;
|
||||||
static inline void set_fs(unsigned long seg)
|
static inline void set_fs(unsigned long seg)
|
||||||
{
|
{
|
||||||
|
@ -19,3 +21,5 @@ int cmdline_find_option_bool(const char *option)
|
||||||
{
|
{
|
||||||
return __cmdline_find_option_bool(real_mode->hdr.cmd_line_ptr, option);
|
return __cmdline_find_option_bool(real_mode->hdr.cmd_line_ptr, option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_EARLY_PRINTK
|
||||||
|
|
||||||
int early_serial_base;
|
int early_serial_base;
|
||||||
|
|
||||||
#include "../early_serial_console.c"
|
#include "../early_serial_console.c"
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -108,8 +108,6 @@ static void error(char *m);
|
||||||
* This is set up by the setup-routine at boot-time
|
* This is set up by the setup-routine at boot-time
|
||||||
*/
|
*/
|
||||||
struct boot_params *real_mode; /* Pointer to real-mode data */
|
struct boot_params *real_mode; /* Pointer to real-mode data */
|
||||||
static int quiet;
|
|
||||||
static int debug;
|
|
||||||
|
|
||||||
void *memset(void *s, int c, size_t n);
|
void *memset(void *s, int c, size_t n);
|
||||||
void *memcpy(void *dest, const void *src, size_t n);
|
void *memcpy(void *dest, const void *src, size_t n);
|
||||||
|
@ -170,15 +168,11 @@ static void serial_putchar(int ch)
|
||||||
outb(ch, early_serial_base + TXR);
|
outb(ch, early_serial_base + TXR);
|
||||||
}
|
}
|
||||||
|
|
||||||
void __putstr(int error, const char *s)
|
void __putstr(const char *s)
|
||||||
{
|
{
|
||||||
int x, y, pos;
|
int x, y, pos;
|
||||||
char c;
|
char c;
|
||||||
|
|
||||||
#ifndef CONFIG_X86_VERBOSE_BOOTUP
|
|
||||||
if (!error)
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
if (early_serial_base) {
|
if (early_serial_base) {
|
||||||
const char *str = s;
|
const char *str = s;
|
||||||
while (*str) {
|
while (*str) {
|
||||||
|
@ -265,9 +259,9 @@ void *memcpy(void *dest, const void *src, size_t n)
|
||||||
|
|
||||||
static void error(char *x)
|
static void error(char *x)
|
||||||
{
|
{
|
||||||
__putstr(1, "\n\n");
|
error_putstr("\n\n");
|
||||||
__putstr(1, x);
|
error_putstr(x);
|
||||||
__putstr(1, "\n\n -- System halted");
|
error_putstr("\n\n -- System halted");
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
asm("hlt");
|
asm("hlt");
|
||||||
|
@ -294,8 +288,7 @@ static void parse_elf(void *output)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!quiet)
|
debug_putstr("Parsing ELF... ");
|
||||||
putstr("Parsing ELF... ");
|
|
||||||
|
|
||||||
phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum);
|
phdrs = malloc(sizeof(*phdrs) * ehdr.e_phnum);
|
||||||
if (!phdrs)
|
if (!phdrs)
|
||||||
|
@ -332,11 +325,6 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,
|
||||||
{
|
{
|
||||||
real_mode = rmode;
|
real_mode = rmode;
|
||||||
|
|
||||||
if (cmdline_find_option_bool("quiet"))
|
|
||||||
quiet = 1;
|
|
||||||
if (cmdline_find_option_bool("debug"))
|
|
||||||
debug = 1;
|
|
||||||
|
|
||||||
if (real_mode->screen_info.orig_video_mode == 7) {
|
if (real_mode->screen_info.orig_video_mode == 7) {
|
||||||
vidmem = (char *) 0xb0000;
|
vidmem = (char *) 0xb0000;
|
||||||
vidport = 0x3b4;
|
vidport = 0x3b4;
|
||||||
|
@ -349,8 +337,7 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,
|
||||||
cols = real_mode->screen_info.orig_video_cols;
|
cols = real_mode->screen_info.orig_video_cols;
|
||||||
|
|
||||||
console_init();
|
console_init();
|
||||||
if (debug)
|
debug_putstr("early console in decompress_kernel\n");
|
||||||
putstr("early console in decompress_kernel\n");
|
|
||||||
|
|
||||||
free_mem_ptr = heap; /* Heap */
|
free_mem_ptr = heap; /* Heap */
|
||||||
free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
|
free_mem_end_ptr = heap + BOOT_HEAP_SIZE;
|
||||||
|
@ -369,11 +356,9 @@ asmlinkage void decompress_kernel(void *rmode, memptr heap,
|
||||||
error("Wrong destination address");
|
error("Wrong destination address");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!quiet)
|
debug_putstr("\nDecompressing Linux... ");
|
||||||
putstr("\nDecompressing Linux... ");
|
|
||||||
decompress(input_data, input_len, NULL, NULL, output, NULL, error);
|
decompress(input_data, input_len, NULL, NULL, output, NULL, error);
|
||||||
parse_elf(output);
|
parse_elf(output);
|
||||||
if (!quiet)
|
debug_putstr("done.\nBooting the kernel.\n");
|
||||||
putstr("done.\nBooting the kernel.\n");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,9 +24,21 @@
|
||||||
|
|
||||||
/* misc.c */
|
/* misc.c */
|
||||||
extern struct boot_params *real_mode; /* Pointer to real-mode data */
|
extern struct boot_params *real_mode; /* Pointer to real-mode data */
|
||||||
void __putstr(int error, const char *s);
|
void __putstr(const char *s);
|
||||||
#define putstr(__x) __putstr(0, __x)
|
#define error_putstr(__x) __putstr(__x)
|
||||||
#define puts(__x) __putstr(0, __x)
|
|
||||||
|
#ifdef CONFIG_X86_VERBOSE_BOOTUP
|
||||||
|
|
||||||
|
#define debug_putstr(__x) __putstr(__x)
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
static inline void debug_putstr(const char *s)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_EARLY_PRINTK
|
||||||
|
|
||||||
/* cmdline.c */
|
/* cmdline.c */
|
||||||
int cmdline_find_option(const char *option, char *buffer, int bufsize);
|
int cmdline_find_option(const char *option, char *buffer, int bufsize);
|
||||||
|
@ -36,4 +48,13 @@ int cmdline_find_option_bool(const char *option);
|
||||||
extern int early_serial_base;
|
extern int early_serial_base;
|
||||||
void console_init(void);
|
void console_init(void);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
/* early_serial_console.c */
|
||||||
|
static const int early_serial_base;
|
||||||
|
static inline void console_init(void)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue