entry.S (95d002e0a34cb0f238abb39987f9980f325d8332) entry.S (2f7932b011e7fb9f98732f95a68f6017d4d8c542)
1/* SPDX-License-Identifier: GPL-2.0 */
2// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
3
4#include <linux/linkage.h>
5#include <abi/entry.h>
6#include <abi/pgtable-bits.h>
7#include <asm/errno.h>
8#include <asm/setup.h>

--- 122 unchanged lines hidden (view full) ---

131 ldw r11, (r13)
132 cmpnei r11, 0
133 bf ret_from_exception
134
135 mov r9, sp
136 bmaski r10, THREAD_SHIFT
137 andn r9, r10
138 ldw r8, (r9, TINFO_FLAGS)
1/* SPDX-License-Identifier: GPL-2.0 */
2// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
3
4#include <linux/linkage.h>
5#include <abi/entry.h>
6#include <abi/pgtable-bits.h>
7#include <asm/errno.h>
8#include <asm/setup.h>

--- 122 unchanged lines hidden (view full) ---

131 ldw r11, (r13)
132 cmpnei r11, 0
133 bf ret_from_exception
134
135 mov r9, sp
136 bmaski r10, THREAD_SHIFT
137 andn r9, r10
138 ldw r8, (r9, TINFO_FLAGS)
139 btsti r8, TIF_SYSCALL_TRACE
140 bt 1f
139 ANDI_R3 r8, (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
140 cmpnei r8, 0
141 bt csky_syscall_trace
141#if defined(__CSKYABIV2__)
142 subi sp, 8
143 stw r5, (sp, 0x4)
144 stw r4, (sp, 0x0)
145 jsr r11 /* Do system call */
146 addi sp, 8
147#else
148 jsr r11
149#endif
150 stw a0, (sp, LSAVE_A0) /* Save return value */
151 jmpi ret_from_exception
152
142#if defined(__CSKYABIV2__)
143 subi sp, 8
144 stw r5, (sp, 0x4)
145 stw r4, (sp, 0x0)
146 jsr r11 /* Do system call */
147 addi sp, 8
148#else
149 jsr r11
150#endif
151 stw a0, (sp, LSAVE_A0) /* Save return value */
152 jmpi ret_from_exception
153
1531:
154 movi a0, 0 /* enter system call */
155 mov a1, sp /* sp = pt_regs pointer */
156 jbsr syscall_trace
154csky_syscall_trace:
155 mov a0, sp /* sp = pt_regs pointer */
156 jbsr syscall_trace_enter
157 /* Prepare args before do system call */
158 ldw a0, (sp, LSAVE_A0)
159 ldw a1, (sp, LSAVE_A1)
160 ldw a2, (sp, LSAVE_A2)
161 ldw a3, (sp, LSAVE_A3)
162#if defined(__CSKYABIV2__)
163 subi sp, 8
164 stw r5, (sp, 0x4)
165 stw r4, (sp, 0x0)
166#else
167 ldw r6, (sp, LSAVE_A4)
168 ldw r7, (sp, LSAVE_A5)
169#endif
170 jsr r11 /* Do system call */
171#if defined(__CSKYABIV2__)
172 addi sp, 8
173#endif
174 stw a0, (sp, LSAVE_A0) /* Save return value */
175
157 /* Prepare args before do system call */
158 ldw a0, (sp, LSAVE_A0)
159 ldw a1, (sp, LSAVE_A1)
160 ldw a2, (sp, LSAVE_A2)
161 ldw a3, (sp, LSAVE_A3)
162#if defined(__CSKYABIV2__)
163 subi sp, 8
164 stw r5, (sp, 0x4)
165 stw r4, (sp, 0x0)
166#else
167 ldw r6, (sp, LSAVE_A4)
168 ldw r7, (sp, LSAVE_A5)
169#endif
170 jsr r11 /* Do system call */
171#if defined(__CSKYABIV2__)
172 addi sp, 8
173#endif
174 stw a0, (sp, LSAVE_A0) /* Save return value */
175
176 movi a0, 1 /* leave system call */
177 mov a1, sp /* right now, sp --> pt_regs */
178 jbsr syscall_trace
176 mov a0, sp /* right now, sp --> pt_regs */
177 jbsr syscall_trace_exit
179 br ret_from_exception
180
181ENTRY(ret_from_kernel_thread)
182 jbsr schedule_tail
183 mov a0, r8
184 jsr r9
185 jbsr ret_from_exception
186
187ENTRY(ret_from_fork)
188 jbsr schedule_tail
189 mov r9, sp
190 bmaski r10, THREAD_SHIFT
191 andn r9, r10
192 ldw r8, (r9, TINFO_FLAGS)
193 movi r11_sig, 1
178 br ret_from_exception
179
180ENTRY(ret_from_kernel_thread)
181 jbsr schedule_tail
182 mov a0, r8
183 jsr r9
184 jbsr ret_from_exception
185
186ENTRY(ret_from_fork)
187 jbsr schedule_tail
188 mov r9, sp
189 bmaski r10, THREAD_SHIFT
190 andn r9, r10
191 ldw r8, (r9, TINFO_FLAGS)
192 movi r11_sig, 1
194 btsti r8, TIF_SYSCALL_TRACE
193 ANDI_R3 r8, (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT)
194 cmpnei r8, 0
195 bf 3f
195 bf 3f
196 movi a0, 1
197 mov a1, sp /* sp = pt_regs pointer */
198 jbsr syscall_trace
196 mov a0, sp /* sp = pt_regs pointer */
197 jbsr syscall_trace_exit
1993:
200 jbsr ret_from_exception
201
202ret_from_exception:
203 ld syscallid, (sp, LSAVE_PSR)
204 btsti syscallid, 31
205 bt 1f
206

--- 148 unchanged lines hidden ---
1983:
199 jbsr ret_from_exception
200
201ret_from_exception:
202 ld syscallid, (sp, LSAVE_PSR)
203 btsti syscallid, 31
204 bt 1f
205

--- 148 unchanged lines hidden ---