[PATCH][v850] On v850, use a long jump to start_kernel

From: Miles Bader (miles@lsi.nec.co.jp)
Date: Fri Jul 18 2003 - 04:45:40 EST


Linus, please apply.

This allows the low-level start code to be located far away from the
rest of the kernel, which is sometimes necessary.

diff -ruN -X../cludes linux-2.6.0-test1-moo/arch/v850/kernel/head.S linux-2.6.0-test1-moo-v850-20030718/arch/v850/kernel/head.S
--- linux-2.6.0-test1-moo/arch/v850/kernel/head.S 2003-06-16 14:52:16.000000000 +0900
+++ linux-2.6.0-test1-moo-v850-20030718/arch/v850/kernel/head.S 2003-07-15 19:06:36.000000000 +0900
@@ -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 @@
         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)
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Jul 23 2003 - 22:00:32 EST