diff options
| author | Miles Bader <miles@lsi.nec.co.jp> | 2003-07-17 20:12:49 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2003-07-17 20:12:49 -0700 |
| commit | 3b728486d25f2046d6b8a9be89a1d7c46bd6df42 (patch) | |
| tree | f00efc9dfacadbfd5eb80fe121713cb04d201105 | |
| parent | df038a2ec29da075bdd9c7d3214dca574dcc3305 (diff) | |
[PATCH] On v850, use a long jump to start_kernel
This allows the low-level start code to be located far away from the
rest of the kernel, which is sometimes necessary.
| -rw-r--r-- | arch/v850/kernel/head.S | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/arch/v850/kernel/head.S b/arch/v850/kernel/head.S index 6fad68e5196d..c490b937ef14 100644 --- a/arch/v850/kernel/head.S +++ b/arch/v850/kernel/head.S @@ -1,8 +1,8 @@ /* * arch/v850/kernel/head.S -- Lowest-level startup code * - * Copyright (C) 2001,02 NEC Corporation - * Copyright (C) 2001,02 Miles Bader <miles@gnu.org> + * Copyright (C) 2001,02,03 NEC Electronics Corporation + * Copyright (C) 2001,02,03 Miles Bader <miles@gnu.org> * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this @@ -115,7 +115,14 @@ C_ENTRY(start): jarl CSYM(memset), lp #endif - // Start Linux kernel. + // What happens if the main kernel function returns (it shouldn't) mov hilo(CSYM(machine_halt)), lp - jr CSYM(start_kernel) + + // Start the linux kernel. We use an indirect jump to get extra + // range, because on some platforms this initial startup code + // (and the associated platform-specific code in mach_early_init) + // are located far away from the main kernel, e.g. so that they + // can initialize RAM first and copy the kernel or something. + mov hilo(CSYM(start_kernel)), r12 + jmp [r12] C_END(start) |
