diff options
author | hp.com!davidm <hp.com!davidm> | 2005-05-17 13:24:49 +0000 |
---|---|---|
committer | hp.com!davidm <hp.com!davidm> | 2005-05-17 13:24:49 +0000 |
commit | 05feedabeaa8eb45bc75b40309f7d2c365ebf581 (patch) | |
tree | 0a42760e9896e1940e7ac258006e835525ba1625 /tests/ia64-test-nat-asm.S | |
parent | 8462f1f87def454ac16e97519d7672fd338d65e7 (diff) | |
download | libunwind-05feedabeaa8eb45bc75b40309f7d2c365ebf581.tar.gz |
(rotate_regs): Load up "pr" with first value. Preserve p63 across rotation.
(save_pr): New function.
(Logical change 1.292)
Diffstat (limited to 'tests/ia64-test-nat-asm.S')
-rw-r--r-- | tests/ia64-test-nat-asm.S | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/tests/ia64-test-nat-asm.S b/tests/ia64-test-nat-asm.S index e435eef9..8c20b6c2 100644 --- a/tests/ia64-test-nat-asm.S +++ b/tests/ia64-test-nat-asm.S @@ -443,12 +443,23 @@ rotate_regs: mov loc4 = r4 ld8 r2 = [in1], 8;; + mov pr = r2, -1 + + ld8 r2 = [in1], 8;; mov r8 = in0 mov r9 = in1 and r2 = 127, r2;; mov ar.ec = 0 mov ar.lc = r2;; -1: br.ctop.dptk.few 1b;; + + // use p6 to preserve p63 as it gets rotated into p16: +(p16) cmp.eq.unc p6,p0 = r0,r0;; +1: +(p6) cmp.eq.unc p16,p0 = r0,r0 +(p63) cmp.eq.unc p6,p0 = r0,r0 + br.ctop.dptk.few 1b;; + +(p6) cmp.eq.unc p63,p0 = r0,r0 CALL_NEXT_PTR(r4, r8, r9) @@ -462,3 +473,27 @@ rotate_regs: br.ret.sptk.many rp .endp rotate_regs + + .global save_pr + .proc save_pr +save_pr: + .prologue + .regstk 2, 4, 2, 0 + .save ar.pfs, loc0 + alloc loc0 = ar.pfs, 2, 4, 2, 0 + .save rp, loc1 + mov loc1 = rp + .save pr, loc2 + mov loc2 = pr + + ld8 r2 = [in1], 8;; + mov pr = r2, -1 + + CALL_NEXT(loc3) + + mov ar.pfs = loc0 + mov rp = loc1 + mov pr = loc2, -1 + br.ret.sptk.many rp + + .endp save_pr |