#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;
}