]> git.proxmox.com Git - rustc.git/blob - vendor/psm/src/arch/sparc_sysv.s
New upstream version 1.49.0+dfsg1
[rustc.git] / vendor / psm / src / arch / sparc_sysv.s
1 #include "psm.h"
2
3 /* FIXME: this ABI has definitely not been verified at all */
4
5 .text
6 .globl rust_psm_stack_direction
7 .p2align 2
8 .type rust_psm_stack_direction,@function
9 rust_psm_stack_direction:
10 /* extern "C" fn() -> u8 */
11 .cfi_startproc
12 jmpl %o7 + 8, %g0
13 mov STACK_DIRECTION_DESCENDING, %o0
14 .rust_psm_stack_direction_end:
15 .size rust_psm_stack_direction,.rust_psm_stack_direction_end-rust_psm_stack_direction
16 .cfi_endproc
17
18
19 .globl rust_psm_stack_pointer
20 .p2align 2
21 .type rust_psm_stack_pointer,@function
22 rust_psm_stack_pointer:
23 /* extern "C" fn() -> *mut u8 */
24 .cfi_startproc
25 jmpl %o7 + 8, %g0
26 mov %o6, %o0
27 .rust_psm_stack_pointer_end:
28 .size rust_psm_stack_pointer,.rust_psm_stack_pointer_end-rust_psm_stack_pointer
29 .cfi_endproc
30
31
32 .globl rust_psm_replace_stack
33 .p2align 2
34 .type rust_psm_replace_stack,@function
35 rust_psm_replace_stack:
36 /* extern "C" fn(%i0: usize, %i1: extern "C" fn(usize), %i2: *mut u8) */
37 .cfi_startproc
38 .cfi_def_cfa 0, 0
39 .cfi_return_column 0
40 jmpl %o1, %g0
41 /* WEIRD: Why is the LSB set for the %sp and %fp on SPARC?? */
42 add %o2, -0x3ff, %o6
43 .rust_psm_replace_stack_end:
44 .size rust_psm_replace_stack,.rust_psm_replace_stack_end-rust_psm_replace_stack
45 .cfi_endproc
46
47
48 .globl rust_psm_on_stack
49 .p2align 2
50 .type rust_psm_on_stack,@function
51 rust_psm_on_stack:
52 /* extern "C" fn(%i0: usize, %i1: usize, %i2: extern "C" fn(usize, usize), %i3: *mut u8) */
53 .cfi_startproc
54 save %o3, -0x43f, %o6
55 .cfi_def_cfa_register %fp
56 .cfi_window_save
57 .cfi_register %r15, %r31
58 mov %i1, %o1
59 jmpl %i2, %o7
60 mov %i0, %o0
61 ret
62 restore
63 .rust_psm_on_stack_end:
64 .size rust_psm_on_stack,.rust_psm_on_stack_end-rust_psm_on_stack
65 .cfi_endproc