Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 3320
b: refs/heads/master
c: 3d345e3
h: refs/heads/master
v: v3
  • Loading branch information
Eric W. Biederman authored and Linus Torvalds committed Jun 25, 2005
1 parent 33dd10d commit 62c736d
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5ded01e83ec3b60191b03b9f88f53acd4e6112f5
refs/heads/master: 3d345e3fc9e9177deb7c82e5c79e32d77eb63cce
11 changes: 11 additions & 0 deletions trunk/arch/i386/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -942,6 +942,17 @@ config SECCOMP

source kernel/Kconfig.hz

config PHYSICAL_START
hex "Physical address where the kernel is loaded" if EMBEDDED
default "0x100000"
help
This gives the physical address where the kernel is loaded.
Primarily used in the case of kexec on panic where the
fail safe kernel needs to run at a different address than
the panic-ed kernel.

Don't change this unless you know what you are doing.

endmenu


Expand Down
7 changes: 4 additions & 3 deletions trunk/arch/i386/boot/compressed/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

#include <linux/linkage.h>
#include <asm/segment.h>
#include <asm/page.h>

.globl startup_32

Expand Down Expand Up @@ -74,7 +75,7 @@ startup_32:
popl %esi # discard address
popl %esi # real mode pointer
xorl %ebx,%ebx
ljmp $(__BOOT_CS), $0x100000
ljmp $(__BOOT_CS), $__PHYSICAL_START

/*
* We come here, if we were loaded high.
Expand All @@ -99,7 +100,7 @@ startup_32:
popl %ecx # lcount
popl %edx # high_buffer_start
popl %eax # hcount
movl $0x100000,%edi
movl $__PHYSICAL_START,%edi
cli # make sure we don't get interrupted
ljmp $(__BOOT_CS), $0x1000 # and jump to the move routine

Expand All @@ -124,5 +125,5 @@ move_routine_start:
movsl
movl %ebx,%esi # Restore setup pointer
xorl %ebx,%ebx
ljmp $(__BOOT_CS), $0x100000
ljmp $(__BOOT_CS), $__PHYSICAL_START
move_routine_end:
7 changes: 4 additions & 3 deletions trunk/arch/i386/boot/compressed/misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include <linux/vmalloc.h>
#include <linux/tty.h>
#include <asm/io.h>
#include <asm/page.h>

/*
* gzip declarations
Expand Down Expand Up @@ -308,7 +309,7 @@ static void setup_normal_output_buffer(void)
#else
if ((RM_ALT_MEM_K > RM_EXT_MEM_K ? RM_ALT_MEM_K : RM_EXT_MEM_K) < 1024) error("Less than 2MB of memory");
#endif
output_data = (char *)0x100000; /* Points to 1M */
output_data = (char *)__PHYSICAL_START; /* Normally Points to 1M */
free_mem_end_ptr = (long)real_mode;
}

Expand All @@ -333,8 +334,8 @@ static void setup_output_buffer_if_we_run_high(struct moveparams *mv)
low_buffer_size = low_buffer_end - LOW_BUFFER_START;
high_loaded = 1;
free_mem_end_ptr = (long)high_buffer_start;
if ( (0x100000 + low_buffer_size) > ((ulg)high_buffer_start)) {
high_buffer_start = (uch *)(0x100000 + low_buffer_size);
if ( (__PHYSICAL_START + low_buffer_size) > ((ulg)high_buffer_start)) {
high_buffer_start = (uch *)(__PHYSICAL_START + low_buffer_size);
mv->hcount = 0; /* say: we need not to move high_buffer */
}
else mv->hcount = -1;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/i386/kernel/vmlinux.lds.S
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ENTRY(phys_startup_32)
jiffies = jiffies_64;
SECTIONS
{
. = LOAD_OFFSET + 0x100000;
. = __KERNEL_START;
phys_startup_32 = startup_32 - LOAD_OFFSET;
/* read-only */
_text = .; /* Text and read-only data */
Expand Down
3 changes: 3 additions & 0 deletions trunk/include/asm-i386/page.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,12 @@ extern int page_is_ram(unsigned long pagenr);

#ifdef __ASSEMBLY__
#define __PAGE_OFFSET (0xC0000000)
#define __PHYSICAL_START CONFIG_PHYSICAL_START
#else
#define __PAGE_OFFSET (0xC0000000UL)
#define __PHYSICAL_START ((unsigned long)CONFIG_PHYSICAL_START)
#endif
#define __KERNEL_START (__PAGE_OFFSET + __PHYSICAL_START)


#define PAGE_OFFSET ((unsigned long)__PAGE_OFFSET)
Expand Down

0 comments on commit 62c736d

Please sign in to comment.