| #include "test.h" |
| |
| char buffer[23] ="0123456789abcdef\0XXXXX"; |
| char bigbuf[512]= |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" |
| "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcde\0"; |
| |
| char target[512]; |
| |
| int mvst(void *targetp, void *source) |
| { |
| asm volatile( |
| " lhi 0, 0\n" |
| " mvst %0, %1\n" |
| ::"a" (targetp),"a" (source): "0", "memory", "cc"); |
| return get_cc(); |
| } |
| |
| int mvst_full(void *targetp, void *source) |
| { |
| asm volatile( |
| " lhi 0, 0\n" |
| "0: mvst %0, %1\n" |
| " jo 0b\n" |
| ::"a" (targetp),"a" (source): "0", "memory", "cc"); |
| return get_cc(); |
| } |
| |
| |
| int main() |
| { |
| short t; |
| char s; |
| printf("CC:%d\n", mvst(target, buffer)); |
| printf("%s\n", target); |
| printf("CC:%d\n",mvst_full(target, bigbuf)); |
| printf("%s\n", target); |
| t = 0x6161; |
| s = 0; |
| printf("%s\n", (char *) &t); |
| printf("CC:%d\n",mvst(&t,&s)); |
| printf("%s\n", (char *) &t); |
| return 0; |
| } |
| |