File ffcall/callback/call-used-registers from the latest check-in


Call-used general-purpose/integer registers, not interfering with arg registers:

grep CALL_USED in the machine description.

Compile the small program:
extern void* volatile x;
extern void* volatile y;
int foo (int a0, int a1, int a2, int a3, int a4, int a5, int a6, int a7)
{ void* a = x; void* b = y; y = a; x = b;
  return a0+a1+a2+a3+a4+a5+a6+a7;
}

Among these, we can use the lexical closure reg, because __vacall_r has no
lexical closure (more precisely, we are building a lexical closure for it).

grep STATIC_CHAIN_REGNUM and TRAMPOLINE_TEMPLATE in the machine description.

            Machine description         first two (a,b)     Lexical closure reg
i386        eax,edx,ecx                 eax,edx                 ecx
m68k        d0,d1,a0,a1                 d0,d1                   a0
mips        r2-r15                      $2=v0,$3=v1,$8=t0       $2
sparc       g1-g4                       g1-g3                   g2
sparc64     g1-g5                       g1-g3                   g5
alpha       $0-$8,$22-$25,$28           $2,$1                   $1
hppa        20-22,28-29                 r19,r20,r21,r22         r29
arm         r12=ip                      r0,r1,r3,r2             r12 (!)
rs6000      0,3-12                      0,11,12                 11
m88k        10,13,11(?)                 r10,r13,r11,r12         r11
convex      s0-s7,a1-a5                 s1,s2                   s0
ia64        r14-r31,r8-r11              r8,r14,r15...r19        r15
x86_64      rax,rdx,rcx,rsi,rdi,r8-r15  rax,r10                 r10