qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

test_lx.c (1459B)


      1 #include <stdio.h>
      2 
      3 int main(void)
      4 {
      5     int a;
      6     int p[50];
      7     int result;
      8 
      9     result = 0x23;
     10     __asm
     11     ("l.ori r8, r0, 0x123\n\t"
     12      "l.sb  0x4 + %1, r8\n\t"
     13      "\n\t"
     14      "l.lbz %0, 0x4 + %1\n\t"
     15      : "=r"(a), "+m"(*p)
     16     );
     17     if (a != result) {
     18         printf("lbz error, %x\n", a);
     19         return -1;
     20     }
     21 
     22     result = 0x23;
     23     __asm
     24     ("l.lbs %0, 0x4 + %1\n\t"
     25      : "=r"(a)
     26      : "m"(*p)
     27     );
     28     if (a != result) {
     29         printf("lbs error\n");
     30         return -1;
     31     }
     32 
     33     result = 0x1111;
     34     __asm
     35     ("l.ori r8, r0, 0x1111\n\t"
     36      "l.sh  0x20 + %1, r8\n\t"
     37      "\n\t"
     38      "l.lhs %0, 0x20 + %1\n\t"
     39      : "=r"(a), "=m"(*p)
     40     );
     41     if (a != result) {
     42         printf("lhs error, %x\n", a);
     43         return -1;
     44     }
     45 
     46     result = 0x1111;
     47     __asm
     48     ("l.lhz %0, 0x20 + %1\n\t"
     49      : "=r"(a)
     50      : "m"(*p)
     51     );
     52     if (a != result) {
     53         printf("lhz error\n");
     54         return -1;
     55     }
     56 
     57     result = 0x1111233;
     58     __asm
     59     ("l.ori r8, r0, 0x1233\n\t"
     60      "l.movhi r1, 0x111\n\t"
     61      "l.or  r8, r8, r1\n\t"
     62      "l.sw  0x123 + %1, r8\n\t"
     63      "\n\t"
     64      "l.lws %0, 0x123 + %1\n\t"
     65      : "=r"(a), "+m"(*p)
     66     );
     67     if (a != result) {
     68         printf("lws error, %x\n", a);
     69         return -1;
     70     }
     71 
     72     result = 0x1111233;
     73     __asm
     74     ("l.lwz %0, 0x123 + %1\n\t"
     75      : "=r"(a)
     76      : "m"(*p)
     77     );
     78     if (a != result) {
     79         printf("lwz error\n");
     80         return -1;
     81     }
     82 
     83     return 0;
     84 }