1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <stdio.h>
2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovunsigned int mem[] = {
3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   0xaabbccdd, 0x11223344, 0x01823194, 0x01823a08,
4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   0x00000000, 0x77ff528c, 0x77deb460, 0x00000001
5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov};
6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovvoid printMem(char* s)
8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{
9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   int i;
10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   printf("%s\n", s);
11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   for (i=0; i<7 ; i=i+1)
12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov      printf("mem[%d]: 0x%x\n", i, mem[i]);
13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}
14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovint main ()
16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{
17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   printMem("PRE lwl");
18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   __asm__ volatile("move $a0, %0"       "\n\t"
19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t0, 0($a0)"   "\n\t"
20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwl  $t0, 4($a0)"   "\n\t"
21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t0, 8($a0)"   "\n\t"
22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t1, 0($a0)"   "\n\t"
23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwl  $t1, 5($a0)"   "\n\t"
24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t1, 12($a0)"  "\n\t"
25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t2, 0($a0)"   "\n\t"
26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwl  $t2, 6($a0)"   "\n\t"
27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t2, 16($a0)"  "\n\t"
28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t3, 0($a0)"   "\n\t"
29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwl  $t3, 7($a0)"   "\n\t"
30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t3, 20($a0)"  "\n\t"
31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    :
32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    : "r" (mem)
33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    : "a0", "t0", "t1", "t2", "t3", "cc", "memory"
34436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                   );
35436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   printMem("POST lwl");
36436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
37436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[0] = 0xaabbccdd;
38436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[1] = 0x11223344;
39436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[2] = 0x01823194;
40436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[3] = 0x01823a08;
41436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[4] = 0x00000000;
42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[5] = 0x77ff528c;
43436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[6] = 0x77deb460;
44436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   mem[7] = 0x00000001;
45436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
46436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   printMem("PRE lwr");
47436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   __asm__ volatile("move $a0, %0"       "\n\t"
48436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t0, 0($a0)"   "\n\t"
49436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwr  $t0, 4($a0)"   "\n\t"
50436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t0, 8($a0)"   "\n\t"
51436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t1, 0($a0)"   "\n\t"
52436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwr  $t1, 5($a0)"   "\n\t"
53436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t1, 12($a0)"  "\n\t"
54436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t2, 0($a0)"   "\n\t"
55436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwr  $t2, 6($a0)"   "\n\t"
56436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t2, 16($a0)"  "\n\t"
57436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lw   $t3, 0($a0)"   "\n\t"
58436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "lwr  $t3, 7($a0)"   "\n\t"
59436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    "sw   $t3, 20($a0)"  "\n\t"
60436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    :
61436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    : "r" (mem)
62436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                    : "a0", "t0", "t1", "t2", "t3", "cc", "memory"
63436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov                   );
64436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   printMem("POST lwr");
65436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov
66436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov   return 0;
67436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}
68