xref: /llvm-project/lldb/test/API/functionalities/unwind/ehframe/main.c (revision 99451b4453688a94c6014cac233d371ab4cc342d)

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