diff options
author | Peng Fan <van.freenix@gmail.com> | 2013-07-18 11:38:12 +0800 |
---|---|---|
committer | Peng Fan <van.freenix@gmail.com> | 2013-07-22 10:51:46 +0800 |
commit | 20cac2e624ce8f2bc55af38b2b030c92a4aac6d1 (patch) | |
tree | 4454a1aa4c5e6508a3020cd83a06063d0f1cf572 /testcase | |
parent | 19b3b6033adfe740038a5cd483f05b7c9273a148 (diff) |
powerpc support
Signed-off-by: Peng Fan <van.freenix@gmail.com>
Diffstat (limited to 'testcase')
-rw-r--r-- | testcase/1.c | 38 | ||||
-rw-r--r-- | testcase/Readme | 8 | ||||
-rw-r--r-- | testcase/wscript | 11 |
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}') |