Artifact 027450b1fb10311b4ab9e2fd9722110e37d10947:


0000: 2f 2a 20 54 72 61 6d 70 6f 6c 69 6e 65 20 66 6f  /* Trampoline fo
0010: 72 20 69 61 36 34 20 43 50 55 20 2a 2f 0a 0a 2f  r ia64 CPU */../
0020: 2a 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 32  *. * Copyright 2
0030: 30 30 31 20 42 72 75 6e 6f 20 48 61 69 62 6c 65  001 Bruno Haible
0040: 2c 20 3c 62 72 75 6e 6f 40 63 6c 69 73 70 2e 6f  , <bruno@clisp.o
0050: 72 67 3e 0a 20 2a 0a 20 2a 20 54 68 69 73 20 69  rg>. *. * This i
0060: 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 20  s free software 
0070: 64 69 73 74 72 69 62 75 74 65 64 20 75 6e 64 65  distributed unde
0080: 72 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61  r the GNU Genera
0090: 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 63 65  l Public Licence
00a0: 0a 20 2a 20 64 65 73 63 72 69 62 65 64 20 69 6e  . * described in
00b0: 20 74 68 65 20 66 69 6c 65 20 43 4f 50 59 49 4e   the file COPYIN
00c0: 47 2e 20 43 6f 6e 74 61 63 74 20 74 68 65 20 61  G. Contact the a
00d0: 75 74 68 6f 72 20 69 66 20 79 6f 75 20 64 6f 6e  uthor if you don
00e0: 27 74 20 68 61 76 65 20 74 68 69 73 0a 20 2a 20  't have this. * 
00f0: 6f 72 20 63 61 6e 27 74 20 6c 69 76 65 20 77 69  or can't live wi
0100: 74 68 20 69 74 2e 20 54 68 65 72 65 20 69 73 20  th it. There is 
0110: 41 42 53 4f 4c 55 54 45 4c 59 20 4e 4f 20 57 41  ABSOLUTELY NO WA
0120: 52 52 41 4e 54 59 2c 20 65 78 70 6c 69 63 69 74  RRANTY, explicit
0130: 20 6f 72 20 69 6d 70 6c 69 65 64 2c 0a 20 2a 20   or implied,. * 
0140: 6f 6e 20 74 68 69 73 20 73 6f 66 74 77 61 72 65  on this software
0150: 2e 0a 20 2a 2f 0a 0a 09 2e 74 65 78 74 0a 09 2e  .. */....text...
0160: 61 6c 69 67 6e 20 31 36 0a 09 2e 67 6c 6f 62 61  align 16...globa
0170: 6c 20 74 72 61 6d 70 23 0a 09 2e 70 72 6f 63 20  l tramp#...proc 
0180: 74 72 61 6d 70 23 0a 74 72 61 6d 70 3a 0a 09 2f  tramp#.tramp:../
0190: 2a 20 54 68 65 20 63 6c 6f 73 75 72 65 20 70 6f  * The closure po
01a0: 69 6e 74 65 72 20 69 73 20 61 6c 72 65 61 64 79  inter is already
01b0: 20 69 6e 20 72 65 67 69 73 74 65 72 20 72 31 2e   in register r1.
01c0: 20 2a 2f 0a 09 6c 64 38 20 72 31 34 20 3d 20 5b   */..ld8 r14 = [
01d0: 72 31 5d 09 09 2f 2a 20 4d 6f 76 65 20 3c 61 64  r1]../* Move <ad
01e0: 64 72 65 73 73 3e 20 69 6e 74 6f 20 72 65 67 69  dress> into regi
01f0: 73 74 65 72 20 72 31 34 2e 20 2a 2f 0a 09 61 64  ster r14. */..ad
0200: 64 73 20 72 31 35 20 3d 20 38 2c 20 72 31 0a 09  ds r15 = 8, r1..
0210: 61 64 64 73 20 72 31 36 20 3d 20 31 36 2c 20 72  adds r16 = 16, r
0220: 31 0a 09 3b 3b 0a 09 2f 2a 20 4a 75 6d 70 20 74  1..;;../* Jump t
0230: 6f 20 72 31 34 2e 20 2a 2f 0a 09 6c 64 38 20 72  o r14. */..ld8 r
0240: 31 38 20 3d 20 5b 72 31 34 5d 0a 09 6c 64 38 20  18 = [r14]..ld8 
0250: 72 31 35 20 3d 20 5b 72 31 35 5d 09 09 2f 2a 20  r15 = [r15]../* 
0260: 4d 6f 76 65 20 3c 76 61 72 69 61 62 6c 65 3e 20  Move <variable> 
0270: 69 6e 74 6f 20 72 65 67 69 73 74 65 72 20 72 31  into register r1
0280: 35 2e 20 2a 2f 0a 09 61 64 64 73 20 72 31 37 20  5. */..adds r17 
0290: 3d 20 38 2c 20 72 31 34 0a 09 3b 3b 0a 09 6c 64  = 8, r14..;;..ld
02a0: 38 20 72 31 36 20 3d 20 5b 72 31 36 5d 09 09 2f  8 r16 = [r16]../
02b0: 2a 20 4d 6f 76 65 20 3c 64 61 74 61 3e 20 69 6e  * Move <data> in
02c0: 74 6f 20 72 65 67 69 73 74 65 72 20 72 31 36 2e  to register r16.
02d0: 20 2a 2f 0a 09 6c 64 38 20 72 31 20 3d 20 5b 72   */..ld8 r1 = [r
02e0: 31 37 5d 0a 09 6d 6f 76 20 62 36 20 3d 20 72 31  17]..mov b6 = r1
02f0: 38 0a 09 3b 3b 0a 09 73 74 38 20 5b 72 31 35 5d  8..;;..st8 [r15]
0300: 20 3d 20 72 31 36 09 09 2f 2a 20 53 74 6f 72 65   = r16../* Store
0310: 20 3c 64 61 74 61 3e 20 69 6e 74 6f 20 3c 76 61   <data> into <va
0320: 72 69 61 62 6c 65 3e 2e 20 2a 2f 0a 09 62 72 20  riable>. */..br 
0330: 62 36 0a 09 3b 3b 0a 09 2e 65 6e 64 70 20 74 72  b6..;;...endp tr
0340: 61 6d 70 23 0a                                   amp#.