Artifact
794b546804d0e0fb5ebc30b762a06c0951cf5328:
0000: 3b 20 54 72 61 6d 70 6f 6c 69 6e 65 20 66 6f 72 ; Trampoline for
0010: 20 68 70 70 61 20 43 50 55 0a 0a 3b 20 43 6f 70 hppa CPU..; Cop
0020: 79 72 69 67 68 74 20 31 39 39 35 20 42 72 75 6e yright 1995 Brun
0030: 6f 20 48 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f o Haible, <bruno
0040: 40 63 6c 69 73 70 2e 6f 72 67 3e 0a 3b 0a 3b 20 @clisp.org>.;.;
0050: 54 68 69 73 20 69 73 20 66 72 65 65 20 73 6f 66 This is free sof
0060: 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74 65 tware distribute
0070: 64 20 75 6e 64 65 72 20 74 68 65 20 47 4e 55 20 d under the GNU
0080: 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c General Public L
0090: 69 63 65 6e 63 65 0a 3b 20 64 65 73 63 72 69 62 icence.; describ
00a0: 65 64 20 69 6e 20 74 68 65 20 66 69 6c 65 20 43 ed in the file C
00b0: 4f 50 59 49 4e 47 2e 20 43 6f 6e 74 61 63 74 20 OPYING. Contact
00c0: 74 68 65 20 61 75 74 68 6f 72 20 69 66 20 79 6f the author if yo
00d0: 75 20 64 6f 6e 27 74 20 68 61 76 65 20 74 68 69 u don't have thi
00e0: 73 0a 3b 20 6f 72 20 63 61 6e 27 74 20 6c 69 76 s.; or can't liv
00f0: 65 20 77 69 74 68 20 69 74 2e 20 54 68 65 72 65 e with it. There
0100: 20 69 73 20 41 42 53 4f 4c 55 54 45 4c 59 20 4e is ABSOLUTELY N
0110: 4f 20 57 41 52 52 41 4e 54 59 2c 20 65 78 70 6c O WARRANTY, expl
0120: 69 63 69 74 20 6f 72 20 69 6d 70 6c 69 65 64 2c icit or implied,
0130: 0a 3b 20 6f 6e 20 74 68 69 73 20 73 6f 66 74 77 .; on this softw
0140: 61 72 65 2e 0a 0a 3b 20 41 76 61 69 6c 61 62 6c are...; Availabl
0150: 65 20 72 65 67 69 73 74 65 72 73 3a 20 25 72 31 e registers: %r1
0160: 39 2c 20 25 72 32 30 2c 20 25 72 32 31 2c 20 25 9, %r20, %r21, %
0170: 72 32 32 2e 0a 0a 09 2e 53 50 41 43 45 20 24 50 r22.....SPACE $P
0180: 52 49 56 41 54 45 24 0a 09 2e 53 55 42 53 50 41 RIVATE$...SUBSPA
0190: 20 24 44 41 54 41 24 2c 51 55 41 44 3d 31 2c 41 $DATA$,QUAD=1,A
01a0: 4c 49 47 4e 3d 38 2c 41 43 43 45 53 53 3d 33 31 LIGN=8,ACCESS=31
01b0: 0a 09 2e 53 55 42 53 50 41 20 24 42 53 53 24 2c ...SUBSPA $BSS$,
01c0: 51 55 41 44 3d 31 2c 41 4c 49 47 4e 3d 38 2c 41 QUAD=1,ALIGN=8,A
01d0: 43 43 45 53 53 3d 33 31 2c 5a 45 52 4f 2c 53 4f CCESS=31,ZERO,SO
01e0: 52 54 3d 38 32 0a 09 2e 53 50 41 43 45 20 24 54 RT=82...SPACE $T
01f0: 45 58 54 24 0a 09 2e 53 55 42 53 50 41 20 24 4c EXT$...SUBSPA $L
0200: 49 54 24 2c 51 55 41 44 3d 30 2c 41 4c 49 47 4e IT$,QUAD=0,ALIGN
0210: 3d 38 2c 41 43 43 45 53 53 3d 34 34 0a 09 2e 53 =8,ACCESS=44...S
0220: 55 42 53 50 41 20 24 43 4f 44 45 24 2c 51 55 41 UBSPA $CODE$,QUA
0230: 44 3d 30 2c 41 4c 49 47 4e 3d 38 2c 41 43 43 45 D=0,ALIGN=8,ACCE
0240: 53 53 3d 34 34 2c 43 4f 44 45 5f 4f 4e 4c 59 0a SS=44,CODE_ONLY.
0250: 0a 09 2e 53 50 41 43 45 20 24 54 45 58 54 24 0a ...SPACE $TEXT$.
0260: 09 2e 53 55 42 53 50 41 20 24 43 4f 44 45 24 0a ..SUBSPA $CODE$.
0270: 0a 09 2e 61 6c 69 67 6e 20 34 0a 09 2e 45 58 50 ...align 4...EXP
0280: 4f 52 54 20 74 72 61 6d 70 0a 74 72 61 6d 70 0a ORT tramp.tramp.
0290: 09 2e 50 52 4f 43 0a 09 2e 43 41 4c 4c 49 4e 46 ..PROC...CALLINF
02a0: 4f 0a 09 2e 45 4e 54 52 59 0a 3b 20 4d 6f 76 65 O...ENTRY.; Move
02b0: 20 3c 64 61 74 61 3e 20 69 6e 74 6f 20 3c 76 61 <data> into <va
02c0: 72 69 61 62 6c 65 3e 0a 09 6c 64 69 6c 20 4c 27 riable>..ldil L'
02d0: 30 78 37 33 35 35 34 37 31 31 2c 25 72 32 30 0a 0x73554711,%r20.
02e0: 09 6c 64 69 6c 20 4c 27 30 78 31 32 33 34 35 36 .ldil L'0x123456
02f0: 37 38 2c 25 72 31 39 0a 09 6c 64 6f 20 52 27 30 78,%r19..ldo R'0
0300: 78 37 33 35 35 34 37 31 31 28 25 72 32 30 29 2c x73554711(%r20),
0310: 25 72 32 30 0a 09 73 74 77 20 25 72 32 30 2c 52 %r20..stw %r20,R
0320: 27 30 78 31 32 33 34 35 36 37 38 28 25 72 31 39 '0x12345678(%r19
0330: 29 0a 3b 20 47 65 74 20 3c 66 75 6e 63 74 69 6f ).; Get <functio
0340: 6e 3e 0a 09 6c 64 69 6c 20 4c 27 30 78 62 61 62 n>..ldil L'0xbab
0350: 65 62 65 63 30 2c 25 72 32 31 0a 09 6c 64 6f 20 ebec0,%r21..ldo
0360: 52 27 30 78 62 61 62 65 62 65 63 30 28 25 72 32 R'0xbabebec0(%r2
0370: 31 29 2c 25 72 32 31 0a 3b 20 4a 75 6d 70 20 74 1),%r21.; Jump t
0380: 6f 20 25 72 32 31 2c 20 6a 75 73 74 20 6c 69 6b o %r21, just lik
0390: 65 20 74 68 65 20 67 63 63 2d 32 2e 36 2e 33 20 e the gcc-2.6.3
03a0: 74 72 61 6d 70 6f 6c 69 6e 65 20 64 6f 65 73 20 trampoline does
03b0: 69 74 3a 0a 09 62 62 2c 3e 3d 2c 6e 20 25 72 32 it:..bb,>=,n %r2
03c0: 31 2c 33 30 2c 74 72 61 6d 70 32 09 3b 20 63 68 1,30,tramp2.; ch
03d0: 65 63 6b 20 62 69 74 20 31 20 6f 66 20 25 72 32 eck bit 1 of %r2
03e0: 31 0a 09 64 65 70 69 20 30 2c 33 31 2c 32 2c 25 1..depi 0,31,2,%
03f0: 72 32 31 09 3b 20 69 66 20 73 65 74 2c 20 63 6c r21.; if set, cl
0400: 65 61 72 20 62 69 74 73 20 31 2e 2e 30 0a 09 6c ear bits 1..0..l
0410: 64 77 20 34 28 30 2c 25 72 32 31 29 2c 25 72 31 dw 4(0,%r21),%r1
0420: 39 09 3b 20 2e 2e 2e 20 64 65 72 65 66 65 72 65 9.; ... derefere
0430: 6e 63 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e nce the function
0440: 20 73 74 72 75 63 74 0a 09 6c 64 77 20 30 28 30 struct..ldw 0(0
0450: 2c 25 72 32 31 29 2c 25 72 32 31 09 3b 20 2e 2e ,%r21),%r21.; ..
0460: 2e 20 74 6f 20 67 65 74 20 74 68 65 20 61 63 74 . to get the act
0470: 75 61 6c 20 63 6f 64 65 20 61 64 64 72 65 73 73 ual code address
0480: 0a 74 72 61 6d 70 32 0a 09 6c 64 73 69 64 20 28 .tramp2..ldsid (
0490: 30 2c 25 72 32 31 29 2c 25 72 31 0a 09 6d 74 73 0,%r21),%r1..mts
04a0: 70 20 25 72 31 2c 25 73 72 30 09 09 3b 20 73 65 p %r1,%sr0..; se
04b0: 74 20 73 65 67 6d 65 6e 74 20 72 65 67 69 73 74 t segment regist
04c0: 65 72 0a 09 62 65 2c 6e 20 30 28 25 73 72 30 2c er..be,n 0(%sr0,
04d0: 25 72 32 31 29 09 3b 20 6e 6f 77 20 64 6f 20 61 %r21).; now do a
04e0: 6e 20 69 6e 74 65 72 2d 6d 6f 64 75 6c 65 20 6a n inter-module j
04f0: 75 6d 70 0a 09 6e 6f 70 0a 09 2e 45 58 49 54 0a ump..nop...EXIT.
0500: 09 2e 50 52 4f 43 45 4e 44 0a ..PROCEND.