From 7fb6c4f9b06c5539043c8bfc6565710b8090841d Mon Sep 17 00:00:00 2001
From: Rafal Jaworowski <raj@semihalf.com>
Date: Fri, 23 Jan 2009 13:27:16 +0100
Subject: [PATCH] API: Provide syscall entry point for the ARM architecture.

Signed-off-by: Rafal Czubak <rcz@semihalf.com>
Acked-by: Rafal Jaworowski <raj@semihalf.com>
---
 api_examples/Makefile |  7 +++----
 api_examples/crt0.S   | 17 ++++++++++++++++-
 lib_arm/board.c       |  5 +++++
 3 files changed, 24 insertions(+), 5 deletions(-)

diff --git a/api_examples/Makefile b/api_examples/Makefile
index 5666f489b93..4c014374434 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 3129a07bcba..6daf127893f 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 964f5cc5f29..fe68df075a1 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)
-- 
GitLab