-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x86, setup: enable early console output from the decompressor
This enables the decompressor output to be seen on the serial console. Most of the code is shared with the regular boot code. We could add printf to the decompressor if needed, but currently there is no sufficiently compelling user. -v2: define BOOT_BOOT_H to avoid include boot.h -v3: early_serial_base need to be static in misc.c ? -v4: create seperate string.c printf.c cmdline.c early_serial_console.c after hpa's patch that allow global variables in compressed/misc stage -v5: remove printf.c related Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
- Loading branch information
Yinghai Lu
authored and
H. Peter Anvin
committed
Aug 3, 2010
1 parent
f4ed287
commit 8fee13a
Showing
7 changed files
with
105 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#include "misc.h" | ||
|
||
static unsigned long fs; | ||
static inline void set_fs(unsigned long seg) | ||
{ | ||
fs = seg << 4; /* shift it back */ | ||
} | ||
typedef unsigned long addr_t; | ||
static inline char rdfs8(addr_t addr) | ||
{ | ||
return *((char *)(fs + addr)); | ||
} | ||
#include "../cmdline.c" | ||
int cmdline_find_option(const char *option, char *buffer, int bufsize) | ||
{ | ||
return __cmdline_find_option(real_mode->hdr.cmd_line_ptr, option, buffer, bufsize); | ||
} | ||
int cmdline_find_option_bool(const char *option) | ||
{ | ||
return __cmdline_find_option_bool(real_mode->hdr.cmd_line_ptr, option); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
#include "misc.h" | ||
|
||
int early_serial_base; | ||
|
||
#include "../early_serial_console.c" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
#ifndef BOOT_COMPRESSED_MISC_H | ||
#define BOOT_COMPRESSED_MISC_H | ||
|
||
/* | ||
* we have to be careful, because no indirections are allowed here, and | ||
* paravirt_ops is a kind of one. As it will only run in baremetal anyway, | ||
* we just keep it from happening | ||
*/ | ||
#undef CONFIG_PARAVIRT | ||
#ifdef CONFIG_X86_32 | ||
#define _ASM_X86_DESC_H 1 | ||
#endif | ||
|
||
#include <linux/linkage.h> | ||
#include <linux/screen_info.h> | ||
#include <linux/elf.h> | ||
#include <linux/io.h> | ||
#include <asm/page.h> | ||
#include <asm/boot.h> | ||
#include <asm/bootparam.h> | ||
|
||
#define BOOT_BOOT_H | ||
|
||
/* misc.c */ | ||
extern struct boot_params *real_mode; /* Pointer to real-mode data */ | ||
void __putstr(int error, const char *s); | ||
#define putstr(__x) __putstr(0, __x) | ||
#define puts(__x) __putstr(0, __x) | ||
|
||
/* cmdline.c */ | ||
int cmdline_find_option(const char *option, char *buffer, int bufsize); | ||
int cmdline_find_option_bool(const char *option); | ||
|
||
/* early_serial_console.c */ | ||
extern int early_serial_base; | ||
void console_init(void); | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
#include "misc.h" | ||
|
||
#include "../isdigit.h" | ||
#include "../string.c" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters