summaryrefslogtreecommitdiff
path: root/laden
diff options
context:
space:
mode:
authormarcus <marcus>2003-09-26 13:46:53 +0000
committermarcus <marcus>2003-09-26 13:46:53 +0000
commitecce080e42a8825f4d3c8bac876f325f17664a71 (patch)
treed4eb27c7cf382d4a9e1b37d8399fe9ac0ebc5fbb /laden
parent9f6b84e8ae6b7e1358d6f0274aefb13b4b714696 (diff)
2003-09-25 Johan Rydberg <jrydberg@night.trouble.net>
* laden.c (main): Call start_kernel to launch kernel instead of calling the kernel start address. * laden.h (start_kernel): Prototype. * ia32-cmain.c (start_kernel): New function.
Diffstat (limited to 'laden')
-rw-r--r--laden/ChangeLog7
-rw-r--r--laden/ia32-cmain.c7
-rw-r--r--laden/laden.c2
-rw-r--r--laden/laden.h3
4 files changed, 18 insertions, 1 deletions
diff --git a/laden/ChangeLog b/laden/ChangeLog
index 1116599..8ca5334 100644
--- a/laden/ChangeLog
+++ b/laden/ChangeLog
@@ -1,3 +1,10 @@
+2003-09-25 Johan Rydberg <jrydberg@night.trouble.net>
+
+ * laden.c (main): Call start_kernel to launch kernel instead
+ of calling the kernel start address.
+ * laden.h (start_kernel): Prototype.
+ * ia32-cmain.c (start_kernel): New function.
+
2003-09-25 Marcus Brinkmann <marcus@gnu.org>
* loader.c [HAVE_CONFIG_H]: Include <config.h>.
diff --git a/laden/ia32-cmain.c b/laden/ia32-cmain.c
index 317973c..591943c 100644
--- a/laden/ia32-cmain.c
+++ b/laden/ia32-cmain.c
@@ -36,6 +36,13 @@ help_arch (void)
"through to the rootserver\n"
"and handled by it.\n";
}
+
+/* Start kernel by simply jumping to the entry point. */
+void
+start_kernel (l4_word_t ip)
+{
+ (*(void (*) (void)) ip) ();
+}
/* Check if the bit BIT in FLAGS is set. */
diff --git a/laden/laden.c b/laden/laden.c
index e7ce290..972c2df 100644
--- a/laden/laden.c
+++ b/laden/laden.c
@@ -208,7 +208,7 @@ main (int argc, char *argv[])
/* FIXME. Flush D-cache? */
- (*(void (*) (void)) kernel.ip) ();
+ start_kernel (kernel.ip);
/* Should not be reached. */
shutdown ();
diff --git a/laden/laden.h b/laden/laden.h
index 08fda5a..276e775 100644
--- a/laden/laden.h
+++ b/laden/laden.h
@@ -41,6 +41,9 @@ extern char *program_name;
required for booting. */
void find_components (void);
+/* Start kernel. IP is the entry point. */
+void start_kernel (l4_word_t ip);
+
typedef __l4_rootserver_t rootserver_t;
/* For the rootserver components, find_components() must fill in the