summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafal Jaworowski <raj@semihalf.com>2009-01-23 13:27:16 +0100
committerWolfgang Denk <wd@denx.de>2009-02-18 00:39:41 +0100
commit7fb6c4f9b06c5539043c8bfc6565710b8090841d (patch)
treef9be70847a132903f6b2b4bc29cb7ef387359c3b
parentb84d7d8f1e1066f810866304a16a3583f88e7c98 (diff)
downloadu-boot-imx-7fb6c4f9b06c5539043c8bfc6565710b8090841d.zip
u-boot-imx-7fb6c4f9b06c5539043c8bfc6565710b8090841d.tar.gz
u-boot-imx-7fb6c4f9b06c5539043c8bfc6565710b8090841d.tar.bz2
API: Provide syscall entry point for the ARM architecture.
Signed-off-by: Rafal Czubak <rcz@semihalf.com> Acked-by: Rafal Jaworowski <raj@semihalf.com>
-rw-r--r--api_examples/Makefile7
-rw-r--r--api_examples/crt0.S17
-rw-r--r--lib_arm/board.c5
3 files changed, 24 insertions, 5 deletions
diff --git a/api_examples/Makefile b/api_examples/Makefile
index 5666f48..4c01437 100644
--- a/api_examples/Makefile
+++ b/api_examples/Makefile
@@ -23,10 +23,9 @@
ifeq ($(ARCH),ppc)
LOAD_ADDR = 0x40000
endif
-
-#ifeq ($(ARCH),arm)
-#LOAD_ADDR = 0xc100000
-#endif
+ifeq ($(ARCH),arm)
+LOAD_ADDR = 0x1000000
+endif
include $(TOPDIR)/config.mk
diff --git a/api_examples/crt0.S b/api_examples/crt0.S
index 3129a07..6daf127 100644
--- a/api_examples/crt0.S
+++ b/api_examples/crt0.S
@@ -26,7 +26,6 @@
#if defined(CONFIG_PPC)
.text
-
.globl _start
_start:
lis %r11, search_hint@ha
@@ -42,6 +41,22 @@ syscall:
lwz %r11, 0(%r11)
mtctr %r11
bctr
+
+#elif defined(CONFIG_ARM)
+
+ .text
+ .globl _start
+_start:
+ ldr ip, =search_hint
+ str sp, [ip]
+ b main
+
+
+ .globl syscall
+syscall:
+ ldr ip, =syscall_ptr
+ ldr pc, [ip]
+
#else
#error No support for this arch!
#endif
diff --git a/lib_arm/board.c b/lib_arm/board.c
index 964f5cc..fe68df0 100644
--- a/lib_arm/board.c
+++ b/lib_arm/board.c
@@ -416,6 +416,11 @@ void start_armboot (void)
jumptable_init ();
+#if defined(CONFIG_API)
+ /* Initialize API */
+ api_init ();
+#endif
+
console_init_r (); /* fully init console as a device */
#if defined(CONFIG_MISC_INIT_R)