/* Trampoline for alpha CPU */ /* * Copyright 1995 Bruno Haible, * * 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