home *** CD-ROM | disk | FTP | other *** search
- /* Trampoline for alpha CPU */
-
- /*
- * Copyright 1995 Bruno Haible, <haible@ma2s2.mathematik.uni-karlsruhe.de>
- *
- * This is free software distributed under the GNU General Public Licence
- * described in the file COPYING. Contact the author if you don't have this
- * or can't live with it. There is ABSOLUTELY NO WARRANTY, explicit or implied,
- * on this software.
- */
-
- /* Available registers: $1, $2, $3, $4, $5, $6, $7, $8. */
-
- .set noreorder
- .set noat
- .text
- .align 3
-
- .globl tramp
- .ent tramp
- tramp:
- br $1,tramp1 /* $1 := address of tramp1 */
- tramp1: /* Load everything relative to $1. If we were to use "lda" instructions
- * we would have to do the usual ldgp $29,0($27)
- */
- ldq $2,20($1) /* data */
- ldq $3,28($1) /* variable */
- ldq $27,36($1) /* function */
- stq $2,0($3)
- /* The called function expects to see its own address in $27. */
- jmp $31,($27),0 /* jump to function */
-
- .align 3
- data:
- .quad 0x73554711
-
- .align 3
- variable:
- .quad 0x12345678
-
- .align 3
- function:
- .quad 0xbabebec0
-
- .end tramp
-