source: mainline/uspace/lib/c/arch/mips32/src/fibril.S@ cb7be8f

Last change on this file since cb7be8f was cb7be8f, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 3 years ago

Update headers in .S files that incorrectly use #-style comments

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/*
2 * SPDX-FileCopyrightText: 2003-2004 Jakub Jermar
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7.text
8
9.set noat
10.set noreorder
11
12#include <abi/asmtool.h>
13#include <libarch/fibril_context.h>
14
15FUNCTION_BEGIN(__context_save)
16 sw $s0, __CONTEXT_OFFSET_S0($a0)
17 sw $s1, __CONTEXT_OFFSET_S1($a0)
18 sw $s2, __CONTEXT_OFFSET_S2($a0)
19 sw $s3, __CONTEXT_OFFSET_S3($a0)
20 sw $s4, __CONTEXT_OFFSET_S4($a0)
21 sw $s5, __CONTEXT_OFFSET_S5($a0)
22 sw $s6, __CONTEXT_OFFSET_S6($a0)
23 sw $s7, __CONTEXT_OFFSET_S7($a0)
24 sw $s8, __CONTEXT_OFFSET_S8($a0)
25 sw $gp, __CONTEXT_OFFSET_GP($a0)
26
27 sw $k1, __CONTEXT_OFFSET_TLS($a0)
28
29#ifdef CONFIG_FPU
30 mfc1 $t0, $20
31 sw $t0, __CONTEXT_OFFSET_F20($a0)
32
33 mfc1 $t0, $21
34 sw $t0, __CONTEXT_OFFSET_F21($a0)
35
36 mfc1 $t0, $22
37 sw $t0, __CONTEXT_OFFSET_F22($a0)
38
39 mfc1 $t0, $23
40 sw $t0, __CONTEXT_OFFSET_F23($a0)
41
42 mfc1 $t0, $24
43 sw $t0, __CONTEXT_OFFSET_F24($a0)
44
45 mfc1 $t0, $25
46 sw $t0, __CONTEXT_OFFSET_F25($a0)
47
48 mfc1 $t0, $26
49 sw $t0, __CONTEXT_OFFSET_F26($a0)
50
51 mfc1 $t0, $27
52 sw $t0, __CONTEXT_OFFSET_F27($a0)
53
54 mfc1 $t0, $28
55 sw $t0, __CONTEXT_OFFSET_F28($a0)
56
57 mfc1 $t0, $29
58 sw $t0, __CONTEXT_OFFSET_F29($a0)
59
60 mfc1 $t0, $30
61 sw $t0, __CONTEXT_OFFSET_F30($a0)
62#endif /* CONFIG_FPU */
63
64 sw $ra, __CONTEXT_OFFSET_PC($a0)
65 sw $sp, __CONTEXT_OFFSET_SP($a0)
66
67 # __context_save returns 0
68 j $ra
69 li $v0, 0
70FUNCTION_END(__context_save)
71
72FUNCTION_BEGIN(__context_restore)
73 lw $s0, __CONTEXT_OFFSET_S0($a0)
74 lw $s1, __CONTEXT_OFFSET_S1($a0)
75 lw $s2, __CONTEXT_OFFSET_S2($a0)
76 lw $s3, __CONTEXT_OFFSET_S3($a0)
77 lw $s4, __CONTEXT_OFFSET_S4($a0)
78 lw $s5, __CONTEXT_OFFSET_S5($a0)
79 lw $s6, __CONTEXT_OFFSET_S6($a0)
80 lw $s7, __CONTEXT_OFFSET_S7($a0)
81 lw $s8, __CONTEXT_OFFSET_S8($a0)
82 lw $gp, __CONTEXT_OFFSET_GP($a0)
83 lw $k1, __CONTEXT_OFFSET_TLS($a0)
84
85#ifdef CONFIG_FPU
86 lw $t0, __CONTEXT_OFFSET_F20($a0)
87 mtc1 $t0, $20
88
89 lw $t0, __CONTEXT_OFFSET_F21($a0)
90 mtc1 $t0, $21
91
92 lw $t0, __CONTEXT_OFFSET_F22($a0)
93 mtc1 $t0, $22
94
95 lw $t0, __CONTEXT_OFFSET_F23($a0)
96 mtc1 $t0, $23
97
98 lw $t0, __CONTEXT_OFFSET_F24($a0)
99 mtc1 $t0, $24
100
101 lw $t0, __CONTEXT_OFFSET_F25($a0)
102 mtc1 $t0, $25
103
104 lw $t0, __CONTEXT_OFFSET_F26($a0)
105 mtc1 $t0, $26
106
107 lw $t0, __CONTEXT_OFFSET_F27($a0)
108 mtc1 $t0, $27
109
110 lw $t0, __CONTEXT_OFFSET_F28($a0)
111 mtc1 $t0, $28
112
113 lw $t0, __CONTEXT_OFFSET_F29($a0)
114 mtc1 $t0, $29
115
116 lw $t0, __CONTEXT_OFFSET_F30($a0)
117 mtc1 $t0, $30
118#endif /* CONFIG_FPU */
119
120 lw $ra, __CONTEXT_OFFSET_PC($a0)
121 lw $sp, __CONTEXT_OFFSET_SP($a0)
122
123 # Just for the jump into first function,
124 # but one instruction should not bother us
125 move $t9, $ra
126
127 # __context_restore returns second argument
128 j $ra
129 move $v0, $a1
130FUNCTION_END(__context_restore)
Note: See TracBrowser for help on using the repository browser.