summary refs log tree commit diff
path: root/src/rt/arch/mips/_context.S
blob: cfe77cc30456b1bacd67918aceab9948aa817af2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
// Mark stack as non-executable
#if defined(__linux__) && defined(__ELF__)
.section	.note.GNU-stack, "", @progbits
#endif

.text
.globl rust_swap_registers
.align 2
.set nomips16
.ent rust_swap_registers
rust_swap_registers:
        .set noreorder
        .set nomacro
        .set noat
        sw $1, 1 * 4($4)
        sw $2, 2 * 4($4)
        sw $3, 3 * 4($4)
        sw $4, 4 * 4($4)
        sw $5, 5 * 4($4)
        sw $6, 6 * 4($4)
        sw $7, 7 * 4($4)

        sw $8, 8 * 4($4)
        sw $9, 9 * 4($4)
        sw $10, 10 * 4($4)
        sw $11, 11 * 4($4)
        sw $12, 12 * 4($4)
        sw $13, 13 * 4($4)
        sw $14, 14 * 4($4)
        sw $15, 15 * 4($4)

        sw $16, 16 * 4($4)
        sw $17, 17 * 4($4)
        sw $18, 18 * 4($4)
        sw $19, 19 * 4($4)
        sw $20, 20 * 4($4)
        sw $21, 21 * 4($4)
        sw $22, 22 * 4($4)
        sw $23, 23 * 4($4)

        sw $24, 24 * 4($4)
        sw $25, 25 * 4($4)
        sw $26, 26 * 4($4)
        sw $27, 27 * 4($4)
        sw $28, 28 * 4($4)
        sw $29, 29 * 4($4)
        sw $30, 30 * 4($4)
        sw $31, 31 * 4($4)

        lw $1, 1 * 4($5)
        lw $2, 2 * 4($5)
        lw $3, 3 * 4($5)
        lw $4, 4 * 4($5)
        lw $6, 6 * 4($5)
        lw $7, 7 * 4($5)

        lw $8, 8 * 4($5)
        lw $9, 9 * 4($5)
        lw $10, 10 * 4($5)
        lw $11, 11 * 4($5)
        lw $12, 12 * 4($5)
        lw $13, 13 * 4($5)
        lw $14, 14 * 4($5)
        lw $15, 15 * 4($5)

        lw $16, 16 * 4($5)
        lw $17, 17 * 4($5)
        lw $18, 18 * 4($5)
        lw $19, 19 * 4($5)
        lw $20, 20 * 4($5)
        lw $21, 21 * 4($5)
        lw $22, 22 * 4($5)
        lw $23, 23 * 4($5)

        lw $24, 24 * 4($5)
        lw $25, 25 * 4($5)
        lw $26, 26 * 4($5)
        lw $27, 27 * 4($5)
        lw $28, 28 * 4($5)
        lw $29, 29 * 4($5)
        lw $30, 30 * 4($5)
        lw $31, 31 * 4($5)

        lw $5, 5 * 4($5)

        jr $31
        nop
.end rust_swap_registers