Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'csky-for-linus-5.7-rc8' of git://github.com/c-sky/csky-linux

Pull csky fixes from Guo Ren:
"Another four fixes for csky:

- fix req_syscall debug

- fix abiv2 syscall_trace

- fix preempt enable

- clean up regs usage in entry.S"

* tag 'csky-for-linus-5.7-rc8' of git://github.com/c-sky/csky-linux:
csky: Fixup CONFIG_DEBUG_RSEQ
csky: Coding convention in entry.S
csky: Fixup abiv2 syscall_trace break a4 & a5
csky: Fixup CONFIG_PREEMPT panic

+66 -71
-6
arch/csky/abiv1/inc/abi/entry.h
··· 80 80 .endm 81 81 82 82 .macro RESTORE_ALL 83 - psrclr ie 84 83 ldw lr, (sp, 4) 85 84 ldw a0, (sp, 8) 86 85 mtcr a0, epc ··· 173 174 174 175 movi r6, 0 175 176 cpwcr r6, cpcr31 176 - .endm 177 - 178 - .macro ANDI_R3 rx, imm 179 - lsri \rx, 3 180 - andi \rx, (\imm >> 3) 181 177 .endm 182 178 #endif /* __ASM_CSKY_ENTRY_H */
+2 -6
arch/csky/abiv2/inc/abi/entry.h
··· 13 13 #define LSAVE_A1 28 14 14 #define LSAVE_A2 32 15 15 #define LSAVE_A3 36 16 + #define LSAVE_A4 40 17 + #define LSAVE_A5 44 16 18 17 19 #define KSPTOUSP 18 20 #define USPTOKSP ··· 65 63 .endm 66 64 67 65 .macro RESTORE_ALL 68 - psrclr ie 69 66 ldw tls, (sp, 0) 70 67 ldw lr, (sp, 4) 71 68 ldw a0, (sp, 8) ··· 301 300 302 301 jmpi 3f /* jump to va */ 303 302 3: 304 - .endm 305 - 306 - .macro ANDI_R3 rx, imm 307 - lsri \rx, 3 308 - andi \rx, (\imm >> 3) 309 303 .endm 310 304 #endif /* __ASM_CSKY_ENTRY_H */
+6
arch/csky/include/asm/thread_info.h
··· 81 81 #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK) 82 82 #define _TIF_SECCOMP (1 << TIF_SECCOMP) 83 83 84 + #define _TIF_WORK_MASK (_TIF_NEED_RESCHED | _TIF_SIGPENDING | \ 85 + _TIF_NOTIFY_RESUME | _TIF_UPROBE) 86 + 87 + #define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT | \ 88 + _TIF_SYSCALL_TRACEPOINT) 89 + 84 90 #endif /* _ASM_CSKY_THREAD_INFO_H */
+58 -59
arch/csky/kernel/entry.S
··· 128 128 ENTRY(csky_systemcall) 129 129 SAVE_ALL TRAP0_SIZE 130 130 zero_fp 131 - #ifdef CONFIG_RSEQ_DEBUG 132 - mov a0, sp 133 - jbsr rseq_syscall 134 - #endif 135 131 psrset ee, ie 136 132 137 - lrw r11, __NR_syscalls 138 - cmphs syscallid, r11 /* Check nr of syscall */ 139 - bt ret_from_exception 133 + lrw r9, __NR_syscalls 134 + cmphs syscallid, r9 /* Check nr of syscall */ 135 + bt 1f 140 136 141 - lrw r13, sys_call_table 142 - ixw r13, syscallid 143 - ldw r11, (r13) 144 - cmpnei r11, 0 137 + lrw r9, sys_call_table 138 + ixw r9, syscallid 139 + ldw syscallid, (r9) 140 + cmpnei syscallid, 0 145 141 bf ret_from_exception 146 142 147 143 mov r9, sp 148 144 bmaski r10, THREAD_SHIFT 149 145 andn r9, r10 150 - ldw r12, (r9, TINFO_FLAGS) 151 - ANDI_R3 r12, (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT) 152 - cmpnei r12, 0 146 + ldw r10, (r9, TINFO_FLAGS) 147 + lrw r9, _TIF_SYSCALL_WORK 148 + and r10, r9 149 + cmpnei r10, 0 153 150 bt csky_syscall_trace 154 151 #if defined(__CSKYABIV2__) 155 152 subi sp, 8 156 153 stw r5, (sp, 0x4) 157 154 stw r4, (sp, 0x0) 158 - jsr r11 /* Do system call */ 155 + jsr syscallid /* Do system call */ 159 156 addi sp, 8 160 157 #else 161 - jsr r11 158 + jsr syscallid 162 159 #endif 163 160 stw a0, (sp, LSAVE_A0) /* Save return value */ 161 + 1: 162 + #ifdef CONFIG_DEBUG_RSEQ 163 + mov a0, sp 164 + jbsr rseq_syscall 165 + #endif 164 166 jmpi ret_from_exception 165 167 166 168 csky_syscall_trace: ··· 175 173 ldw a3, (sp, LSAVE_A3) 176 174 #if defined(__CSKYABIV2__) 177 175 subi sp, 8 178 - stw r5, (sp, 0x4) 179 - stw r4, (sp, 0x0) 176 + ldw r9, (sp, LSAVE_A4) 177 + stw r9, (sp, 0x0) 178 + ldw r9, (sp, LSAVE_A5) 179 + stw r9, (sp, 0x4) 180 + jsr syscallid /* Do system call */ 181 + addi sp, 8 180 182 #else 181 183 ldw r6, (sp, LSAVE_A4) 182 184 ldw r7, (sp, LSAVE_A5) 183 - #endif 184 - jsr r11 /* Do system call */ 185 - #if defined(__CSKYABIV2__) 186 - addi sp, 8 185 + jsr syscallid /* Do system call */ 187 186 #endif 188 187 stw a0, (sp, LSAVE_A0) /* Save return value */ 189 188 189 + #ifdef CONFIG_DEBUG_RSEQ 190 + mov a0, sp 191 + jbsr rseq_syscall 192 + #endif 190 193 mov a0, sp /* right now, sp --> pt_regs */ 191 194 jbsr syscall_trace_exit 192 195 br ret_from_exception ··· 207 200 mov r9, sp 208 201 bmaski r10, THREAD_SHIFT 209 202 andn r9, r10 210 - ldw r12, (r9, TINFO_FLAGS) 211 - ANDI_R3 r12, (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_TRACEPOINT | _TIF_SYSCALL_AUDIT) 212 - cmpnei r12, 0 203 + ldw r10, (r9, TINFO_FLAGS) 204 + lrw r9, _TIF_SYSCALL_WORK 205 + and r10, r9 206 + cmpnei r10, 0 213 207 bf ret_from_exception 214 208 mov a0, sp /* sp = pt_regs pointer */ 215 209 jbsr syscall_trace_exit 216 210 217 211 ret_from_exception: 218 - ld syscallid, (sp, LSAVE_PSR) 219 - btsti syscallid, 31 220 - bt 1f 212 + psrclr ie 213 + ld r9, (sp, LSAVE_PSR) 214 + btsti r9, 31 221 215 216 + bt 1f 222 217 /* 223 218 * Load address of current->thread_info, Then get address of task_struct 224 219 * Get task_needreshed in task_struct ··· 229 220 bmaski r10, THREAD_SHIFT 230 221 andn r9, r10 231 222 232 - ldw r12, (r9, TINFO_FLAGS) 233 - andi r12, (_TIF_SIGPENDING | _TIF_NOTIFY_RESUME | _TIF_NEED_RESCHED | _TIF_UPROBE) 234 - cmpnei r12, 0 223 + ldw r10, (r9, TINFO_FLAGS) 224 + lrw r9, _TIF_WORK_MASK 225 + and r10, r9 226 + cmpnei r10, 0 235 227 bt exit_work 236 228 1: 229 + #ifdef CONFIG_PREEMPTION 230 + mov r9, sp 231 + bmaski r10, THREAD_SHIFT 232 + andn r9, r10 233 + 234 + ldw r10, (r9, TINFO_PREEMPT) 235 + cmpnei r10, 0 236 + bt 2f 237 + jbsr preempt_schedule_irq /* irq en/disable is done inside */ 238 + 2: 239 + #endif 240 + 237 241 #ifdef CONFIG_TRACE_IRQFLAGS 238 242 ld r10, (sp, LSAVE_PSR) 239 243 btsti r10, 6 ··· 257 235 RESTORE_ALL 258 236 259 237 exit_work: 260 - lrw syscallid, ret_from_exception 261 - mov lr, syscallid 238 + lrw r9, ret_from_exception 239 + mov lr, r9 262 240 263 - btsti r12, TIF_NEED_RESCHED 241 + btsti r10, TIF_NEED_RESCHED 264 242 bt work_resched 265 243 244 + psrset ie 266 245 mov a0, sp 267 - mov a1, r12 246 + mov a1, r10 268 247 jmpi do_notify_resume 269 248 270 249 work_resched: ··· 314 291 jbsr trace_hardirqs_off 315 292 #endif 316 293 317 - #ifdef CONFIG_PREEMPTION 318 - mov r9, sp /* Get current stack pointer */ 319 - bmaski r10, THREAD_SHIFT 320 - andn r9, r10 /* Get thread_info */ 321 - 322 - /* 323 - * Get task_struct->stack.preempt_count for current, 324 - * and increase 1. 325 - */ 326 - ldw r12, (r9, TINFO_PREEMPT) 327 - addi r12, 1 328 - stw r12, (r9, TINFO_PREEMPT) 329 - #endif 330 294 331 295 mov a0, sp 332 296 jbsr csky_do_IRQ 333 297 334 - #ifdef CONFIG_PREEMPTION 335 - subi r12, 1 336 - stw r12, (r9, TINFO_PREEMPT) 337 - cmpnei r12, 0 338 - bt 2f 339 - ldw r12, (r9, TINFO_FLAGS) 340 - btsti r12, TIF_NEED_RESCHED 341 - bf 2f 342 - jbsr preempt_schedule_irq /* irq en/disable is done inside */ 343 - #endif 344 - 2: 345 298 jmpi ret_from_exception 346 299 347 300 /*