Commit | Line | Data |
---|---|---|
7be570e7 JM |
1 | ; assemble as "as -o reg-pa64 reg-pa64.s" |
2 | ; or | |
3 | ; cc -g -o +DA2.0W | |
4 | ; | |
5 | ; PA-RISC 2.0 register contents test. | |
6 | ; | |
7 | .level 2.0W | |
8 | ||
9 | .code | |
10 | .export main,ENTRY | |
11 | .export mainend,CODE | |
12 | .export lab1,CODE | |
13 | .space $TEXT$ | |
14 | .subspa $CODE$ | |
15 | one | |
16 | .align 8 | |
17 | .stringz "?\xF0\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00" | |
18 | ||
19 | main | |
20 | .proc | |
21 | .callinfo NO_CALLS,FRAME=0 | |
22 | .entry | |
23 | ||
24 | ;; Test we have right register numbers | |
25 | ;; | |
26 | ADD %r0,%r0,%r1 ; 0 | |
27 | LDI 1,%r1 ; 1 | |
28 | ;; | |
29 | ;; Don't put anything into r2 or r3--they are special registers. | |
30 | ;; | |
31 | ADD %r1,%r1,%r4 ; 2 | |
32 | ADD %r4,%r4,%r5 ; 4 | |
33 | ADD %r5,%r5,%r6 ; 8 | |
34 | ADD %r6,%r6,%r7 ; 16 | |
35 | ADD %r7,%r7,%r8 ; 32 | |
36 | ADD %r8,%r8,%r9 ; 64 | |
37 | ADD %r9,%r9,%r10 ; 128 | |
38 | ADD %r10,%r10,%r11 ; 256 | |
39 | ADD %r11,%r11,%r12 ; 512 | |
40 | ADD %r12,%r12,%r13 ; 1024 | |
41 | ADD %r13,%r13,%r14 ; 2048 | |
42 | ADD %r14,%r14,%r15 ; 4096 | |
43 | ADD %r15,%r15,%r16 ; 9192 | |
44 | ||
45 | ;; Test high bits, to be sure we show them. | |
46 | ;; | |
47 | LDI 0xde,%r19 ; "de" | |
48 | DEPD,Z %r19,55,56,%r19 ; "de00" | |
49 | LDI 0xad,%r18 ; "ad" | |
50 | ADD %r18,%r19,%r19 ; "dead" | |
51 | DEPD,Z %r19,55,56,%r19 ; "dead00" | |
52 | LDI 0xbe,%r18 ; "be" | |
53 | ADD %r18,%r19,%r19 ; "deadbe" | |
54 | DEPD,Z %r19,55,56,%r19 ; "deadbe00" | |
55 | LDI 0xef,%r18 ; "ef" | |
56 | ADD %r18,%r19,%r19 ; "deadbeef" | |
57 | ; | |
58 | DEPD,Z %r19,55,56,%r19 ; "deadbeef00" | |
59 | LDI 0xba,%r18 ; "ba" | |
60 | ADD %r18,%r19,%r19 ; "deadbeefba" | |
61 | DEPD,Z %r19,55,56,%r19 ; "deadbeefba00" | |
62 | LDI 0xdc,%r18 ; "dc" | |
63 | ADD %r18,%r19,%r19 ; "deadbeefbadc" | |
64 | DEPD,Z %r19,55,56,%r19 ; "deadbeefbadc00" | |
65 | LDI 0xad,%r18 ; "ad" | |
66 | ADD %r18,%r19,%r19 ; "deadbeefbadcad" | |
67 | DEPD,Z %r19,55,56,%r19 ; "deadbeefbadcad00" | |
68 | LDI 0xee,%r18 ; "ee" | |
69 | ADD %r18,%r19,%r19 ; "deadbeefbadcadee" | |
70 | ||
71 | lab1 ;; Test floating point registers | |
72 | ;; | |
73 | ;; LDIL LR'one,%r22 ; | |
74 | ;; FLDD RR'one(%r22),%fr4 ; 1.0 | |
75 | ;; FLDD RR'one+8(%r22),%fr5 ; 2.0 | |
76 | ;; FLDD RR'one+8(%r22),%fr6 ; 2.0 | |
77 | B,L here,%r2 | |
78 | NOP | |
79 | here DEPDI 0x0,63,2,%r2 | |
80 | LDO one-here(%r2),%r2 | |
81 | FLDD 0(%r2),%fr4 | |
82 | FLDD 8(%r2),%fr5 | |
83 | FLDD 8(%r2),%fr6 | |
84 | ||
85 | FMPY,DBL %fr5,%fr6,%fr7 ; 4.0 | |
86 | FMPY,DBL %fr6,%fr7,%fr8 ; 8.0 | |
87 | FMPY,DBL %fr7,%fr8,%fr9 ; 32.0 | |
88 | FMPY,DBL %fr8,%fr9,%fr10 ; 256.0 | |
89 | ||
90 | ;; The NOP prevents anything from end.o or crt0.o from | |
91 | ;; being appended immediately after "mainend". If that | |
92 | ;; happens, then we may have other labels that have the | |
93 | ;; same address as "mainend", and thus the debugger | |
94 | ;; may symbolize this PC to something other than "mainend". | |
95 | mainend | |
96 | NOP | |
97 | .exit | |
98 | .procend | |
99 | ||
100 | .space $TEXT$ | |
101 | .subspa $CODE$ | |
102 | .subspa $LIT$ ;; <don't use> ,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16 | |
103 | .end | |
104 |