summaryrefslogtreecommitdiff
path: root/testcase
diff options
context:
space:
mode:
authorPeng Fan <van.freenix@gmail.com>2013-07-18 11:38:12 +0800
committerPeng Fan <van.freenix@gmail.com>2013-07-22 10:51:46 +0800
commit20cac2e624ce8f2bc55af38b2b030c92a4aac6d1 (patch)
tree4454a1aa4c5e6508a3020cd83a06063d0f1cf572 /testcase
parent19b3b6033adfe740038a5cd483f05b7c9273a148 (diff)
powerpc support
Signed-off-by: Peng Fan <van.freenix@gmail.com>
Diffstat (limited to 'testcase')
-rw-r--r--testcase/1.c38
-rw-r--r--testcase/Readme8
-rw-r--r--testcase/wscript11
3 files changed, 57 insertions, 0 deletions
diff --git a/testcase/1.c b/testcase/1.c
index e8a1241..98d4453 100644
--- a/testcase/1.c
+++ b/testcase/1.c
@@ -10,7 +10,19 @@ void hello(int arg)
case 2:
printf("Inter-module call hello()\n");
break;
+#if defined PPC
+ case 24:
+ printf("PPC ADDR24 'bla hello' call\n");
+ break;
+ case 14:
+ printf("PPC REL14 'beq cr7, hello' jump\n");
+ break;
+ case 15:
+ printf("PPC ADDR14 'beqa cr7, hello' jump\n");
+ break;
+#endif
default:
+ printf("no arg in hello\n");
return;
}
}
@@ -99,6 +111,32 @@ int rtems(int argc, char **argv)
);
#endif
+#elif defined PPC
+ __asm__ volatile (
+ "stwu 3, -8(1)\r\n"
+ "li 3, 24\r\n"
+ "bla hello\r\n" /*ADDR24*/
+ "nop\r\n"
+ "nop\r\n"
+ "lwz 3, 8(1)\r\n"
+ "addi 1, 1, 8\r\n"
+ );
+
+ __asm__ volatile (
+ "stwu 3, -4(1)\r\n"
+ "li 3, 14\r\n"
+ "cmpwi cr7, 3, 14\r\n"
+ "bl 1f\r\n"
+ "1: mflr 6\r\n"
+ "addi 6, 6, 20\r\n"
+ "mtlr 6\r\n"
+ "beq cr7, hello\r\n" /*REL14*/
+ "nop\r\n"
+ "nop\r\n"
+ "nop\r\n"
+ "lwz 3, 4(1)\r\n"
+ "addi 1, 1, 4\r\n"
+ );
#else
/* other archs */
#endif
diff --git a/testcase/Readme b/testcase/Readme
index 1312f60..81a7559 100644
--- a/testcase/Readme
+++ b/testcase/Readme
@@ -9,3 +9,11 @@ arm:
waf configure --rtems=/opt/rtems-4.11 --rtems-tools=/opt/rtems-4.11 --rtems-archs=arm --rtems-bsps=arm/realview_pbx_a9_qemu
In the wscript, you can use different cflags to test.
+
+powerpc:
+ Simulator:
+ psim -i build/powerpc-rtems4.11-psim/rtld
+
+ Configuration:
+ waf configure --rtems=/opt/rtems-4.11 --rtems-tools=/opt/rtems-4.11 --rtems-archs=powerpc --rtems-bsps=powerpc/psim
+ "-fno-common" are add to cflags to avoid common section problem.
diff --git a/testcase/wscript b/testcase/wscript
index a518cb6..0eacc2f 100644
--- a/testcase/wscript
+++ b/testcase/wscript
@@ -27,6 +27,17 @@ def build(bld):
'--entry', 'my_main'],
source = ['1.c', '2.c'])
+ elif arch == 'powerpc':
+ bld(target = 'test.rap',
+ features = 'c rap',
+ xxxx = 'hello',
+
+ cflags = '-fno-common -DPPC_TEST',
+
+ rtems_linkflags = ['--base', 'rtld.prelink',
+ '--entry', 'my_main'],
+ source = ['1.c', '2.c'])
+
bld(target = '../test.rap',
source = ['test.rap'],
rule = 'cp ${SRC} ${TGT}')