| void func() { |
| |
| #ifdef __powerpc64__ |
| __asm__ ( |
| "mflr 0;" |
| "std 0,16(1);" |
| "addi 1,1,-24;" |
| "mr 31,1;" |
| ".cfi_def_cfa_offset 24;" |
| "addi 0,0,0;" |
| "addi 1,1,24;" |
| "ld 0,16(1);" |
| ".cfi_def_cfa_offset 0;" |
| ); |
| #elif !defined __mips__ |
| __asm__ ( |
| "pushq $0x10;" |
| ".cfi_def_cfa_offset 16;" |
| "jmp label;" |
| "movq $0x48, %rax;" |
| "label: subq $0x38, %rax;" |
| "movq $0x48, %rcx;" |
| "movq $0x48, %rdx;" |
| "movq $0x48, %rax;" |
| "popq %rax;" |
| ); |
| #elif __mips64 |
| __asm__ ( |
| "daddiu $sp,$sp,-16;" |
| ".cfi_def_cfa_offset 16;" |
| "sd $ra,8($sp);" |
| ".cfi_offset 31, -8;" |
| "daddiu $ra,$zero,0;" |
| "ld $ra,8($sp);" |
| "daddiu $sp, $sp,16;" |
| ".cfi_restore 31;" |
| ".cfi_def_cfa_offset 0;" |
| ); |
| #else |
| // For MIPS32 |
| __asm__ ( |
| "addiu $sp,$sp,-8;" |
| ".cfi_def_cfa_offset 8;" |
| "sw $ra,4($sp);" |
| ".cfi_offset 31, -4;" |
| "addiu $ra,$zero,0;" |
| "lw $ra,4($sp);" |
| "addiu $sp,$sp,8;" |
| ".cfi_restore 31;" |
| ".cfi_def_cfa_offset 0;" |
| ); |
| #endif |
| } |
| |
| int main(int argc, char const *argv[]) |
| { |
| func(); |
| } |