func()1*99451b44SJordan Rupprecht void func() {
2*99451b44SJordan Rupprecht
3*99451b44SJordan Rupprecht #ifdef __powerpc64__
4*99451b44SJordan Rupprecht __asm__ (
5*99451b44SJordan Rupprecht "mflr 0;"
6*99451b44SJordan Rupprecht "std 0,16(1);"
7*99451b44SJordan Rupprecht "addi 1,1,-24;"
8*99451b44SJordan Rupprecht "mr 31,1;"
9*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 24;"
10*99451b44SJordan Rupprecht "addi 0,0,0;"
11*99451b44SJordan Rupprecht "addi 1,1,24;"
12*99451b44SJordan Rupprecht "ld 0,16(1);"
13*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 0;"
14*99451b44SJordan Rupprecht );
15*99451b44SJordan Rupprecht #elif !defined __mips__
16*99451b44SJordan Rupprecht __asm__ (
17*99451b44SJordan Rupprecht "pushq $0x10;"
18*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 16;"
19*99451b44SJordan Rupprecht "jmp label;"
20*99451b44SJordan Rupprecht "movq $0x48, %rax;"
21*99451b44SJordan Rupprecht "label: subq $0x38, %rax;"
22*99451b44SJordan Rupprecht "movq $0x48, %rcx;"
23*99451b44SJordan Rupprecht "movq $0x48, %rdx;"
24*99451b44SJordan Rupprecht "movq $0x48, %rax;"
25*99451b44SJordan Rupprecht "popq %rax;"
26*99451b44SJordan Rupprecht );
27*99451b44SJordan Rupprecht #elif __mips64
28*99451b44SJordan Rupprecht __asm__ (
29*99451b44SJordan Rupprecht "daddiu $sp,$sp,-16;"
30*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 16;"
31*99451b44SJordan Rupprecht "sd $ra,8($sp);"
32*99451b44SJordan Rupprecht ".cfi_offset 31, -8;"
33*99451b44SJordan Rupprecht "daddiu $ra,$zero,0;"
34*99451b44SJordan Rupprecht "ld $ra,8($sp);"
35*99451b44SJordan Rupprecht "daddiu $sp, $sp,16;"
36*99451b44SJordan Rupprecht ".cfi_restore 31;"
37*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 0;"
38*99451b44SJordan Rupprecht );
39*99451b44SJordan Rupprecht #else
40*99451b44SJordan Rupprecht // For MIPS32
41*99451b44SJordan Rupprecht __asm__ (
42*99451b44SJordan Rupprecht "addiu $sp,$sp,-8;"
43*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 8;"
44*99451b44SJordan Rupprecht "sw $ra,4($sp);"
45*99451b44SJordan Rupprecht ".cfi_offset 31, -4;"
46*99451b44SJordan Rupprecht "addiu $ra,$zero,0;"
47*99451b44SJordan Rupprecht "lw $ra,4($sp);"
48*99451b44SJordan Rupprecht "addiu $sp,$sp,8;"
49*99451b44SJordan Rupprecht ".cfi_restore 31;"
50*99451b44SJordan Rupprecht ".cfi_def_cfa_offset 0;"
51*99451b44SJordan Rupprecht );
52*99451b44SJordan Rupprecht #endif
53*99451b44SJordan Rupprecht }
54*99451b44SJordan Rupprecht
main(int argc,char const * argv[])55*99451b44SJordan Rupprecht int main(int argc, char const *argv[])
56*99451b44SJordan Rupprecht {
57*99451b44SJordan Rupprecht func();
58*99451b44SJordan Rupprecht }
59