Merge tag 'csky-for-linus-4.21' of git://github.com/c-sky/csky-linux
Pull arch/csky updates from Guo Ren: "Here are three main features (cpu_hotplug, basic ftrace, basic perf) and some bugfixes: Features: - Add CPU-hotplug support for SMP - Add ftrace with function trace and function graph trace - Add Perf support - Add EM_CSKY_OLD 39 - optimize kernel panic print. - remove syscall_exit_work Bugfixes: - fix abiv2 mmap(... O_SYNC) failure - fix gdb coredump error - remove vdsp implement for kernel - fix qemu failure to bootup sometimes - fix ftrace call-graph panic - fix device tree node reference leak - remove meaningless header-y - fix save hi,lo,dspcr regs in switch_stack - remove unused members in processor.h" * tag 'csky-for-linus-4.21' of git://github.com/c-sky/csky-linux: csky: Add perf support for C-SKY csky: Add EM_CSKY_OLD 39 clocksource/drivers/c-sky: fixup ftrace call-graph panic csky: ftrace call graph supported. csky: basic ftrace supported csky: remove unused members in processor.h csky: optimize kernel panic print. csky: stacktrace supported. csky: CPU-hotplug supported for SMP clocksource/drivers/c-sky: fixup qemu fail to bootup sometimes. csky: fixup save hi,lo,dspcr regs in switch_stack. csky: remove syscall_exit_work csky: fixup remove vdsp implement for kernel. csky: bugfix gdb coredump error. csky: fixup abiv2 mmap(... O_SYNC) failed. csky: define syscall_get_arch() elf-em.h: add EM_CSKY csky: remove meaningless header-y csky: Don't leak device tree node reference
This commit is contained in:
@@ -7,7 +7,8 @@
|
||||
#include <asm/ptrace.h>
|
||||
#include <abi/regdef.h>
|
||||
|
||||
#define ELF_ARCH 252
|
||||
#define ELF_ARCH EM_CSKY
|
||||
#define EM_CSKY_OLD 39
|
||||
|
||||
/* CSKY Relocations */
|
||||
#define R_CSKY_NONE 0
|
||||
@@ -31,14 +32,20 @@ typedef unsigned long elf_greg_t;
|
||||
|
||||
typedef struct user_fp elf_fpregset_t;
|
||||
|
||||
#define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t))
|
||||
/*
|
||||
* In gdb/bfd elf32-csky.c, csky_elf_grok_prstatus() use fixed size of
|
||||
* elf_prstatus. It's 148 for abiv1 and 220 for abiv2, the size is enough
|
||||
* for coredump and no need full sizeof(struct pt_regs).
|
||||
*/
|
||||
#define ELF_NGREG ((sizeof(struct pt_regs) / sizeof(elf_greg_t)) - 2)
|
||||
|
||||
typedef elf_greg_t elf_gregset_t[ELF_NGREG];
|
||||
|
||||
/*
|
||||
* This is used to ensure we don't load something for the wrong architecture.
|
||||
*/
|
||||
#define elf_check_arch(x) ((x)->e_machine == ELF_ARCH)
|
||||
#define elf_check_arch(x) (((x)->e_machine == ELF_ARCH) || \
|
||||
((x)->e_machine == EM_CSKY_OLD))
|
||||
|
||||
/*
|
||||
* These are used to set parameters in the core dumps.
|
||||
|
13
arch/csky/include/asm/ftrace.h
Normal file
13
arch/csky/include/asm/ftrace.h
Normal file
@@ -0,0 +1,13 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
|
||||
|
||||
#ifndef __ASM_CSKY_FTRACE_H
|
||||
#define __ASM_CSKY_FTRACE_H
|
||||
|
||||
#define MCOUNT_INSN_SIZE 4
|
||||
|
||||
#define HAVE_FUNCTION_GRAPH_FP_TEST
|
||||
|
||||
#define HAVE_FUNCTION_GRAPH_RET_ADDR_PTR
|
||||
|
||||
#endif /* __ASM_CSKY_FTRACE_H */
|
7
arch/csky/include/asm/perf_event.h
Normal file
7
arch/csky/include/asm/perf_event.h
Normal file
@@ -0,0 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
|
||||
|
||||
#ifndef __ASM_CSKY_PERF_EVENT_H
|
||||
#define __ASM_CSKY_PERF_EVENT_H
|
||||
|
||||
#endif /* __ASM_PERF_EVENT_ELF_H */
|
@@ -11,19 +11,13 @@
|
||||
#include <asm/cache.h>
|
||||
#include <abi/reg_ops.h>
|
||||
#include <abi/regdef.h>
|
||||
#include <abi/switch_context.h>
|
||||
#ifdef CONFIG_CPU_HAS_FPU
|
||||
#include <abi/fpu.h>
|
||||
#endif
|
||||
|
||||
struct cpuinfo_csky {
|
||||
unsigned long udelay_val;
|
||||
unsigned long asid_cache;
|
||||
/*
|
||||
* Capability and feature descriptor structure for CSKY CPU
|
||||
*/
|
||||
unsigned long options;
|
||||
unsigned int processor_id[4];
|
||||
unsigned int fpu_id;
|
||||
} __aligned(SMP_CACHE_BYTES);
|
||||
|
||||
extern struct cpuinfo_csky cpu_data[];
|
||||
@@ -49,13 +43,6 @@ extern struct cpuinfo_csky cpu_data[];
|
||||
struct thread_struct {
|
||||
unsigned long ksp; /* kernel stack pointer */
|
||||
unsigned long sr; /* saved status register */
|
||||
unsigned long esp0; /* points to SR of stack frame */
|
||||
unsigned long hi;
|
||||
unsigned long lo;
|
||||
|
||||
/* Other stuff associated with the thread. */
|
||||
unsigned long address; /* Last user fault */
|
||||
unsigned long error_code;
|
||||
|
||||
/* FPU regs */
|
||||
struct user_fp __aligned(16) user_fp;
|
||||
|
@@ -21,6 +21,10 @@ void __init set_send_ipi(void (*func)(const struct cpumask *mask), int irq);
|
||||
|
||||
#define raw_smp_processor_id() (current_thread_info()->cpu)
|
||||
|
||||
int __cpu_disable(void);
|
||||
|
||||
void __cpu_die(unsigned int cpu);
|
||||
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#endif /* __ASM_CSKY_SMP_H */
|
||||
|
@@ -6,6 +6,7 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/err.h>
|
||||
#include <abi/regdef.h>
|
||||
#include <uapi/linux/audit.h>
|
||||
|
||||
static inline int
|
||||
syscall_get_nr(struct task_struct *task, struct pt_regs *regs)
|
||||
@@ -68,4 +69,10 @@ syscall_set_arguments(struct task_struct *task, struct pt_regs *regs,
|
||||
memcpy(®s->a1 + i * sizeof(regs->a1), args, n * sizeof(regs->a0));
|
||||
}
|
||||
|
||||
static inline int
|
||||
syscall_get_arch(void)
|
||||
{
|
||||
return AUDIT_ARCH_CSKY;
|
||||
}
|
||||
|
||||
#endif /* __ASM_SYSCALL_H */
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include <asm/types.h>
|
||||
#include <asm/page.h>
|
||||
#include <asm/processor.h>
|
||||
#include <abi/switch_context.h>
|
||||
|
||||
struct thread_info {
|
||||
struct task_struct *task;
|
||||
@@ -36,6 +37,9 @@ struct thread_info {
|
||||
|
||||
#define THREAD_SIZE_ORDER (THREAD_SHIFT - PAGE_SHIFT)
|
||||
|
||||
#define thread_saved_fp(tsk) \
|
||||
((unsigned long)(((struct switch_stack *)(tsk->thread.ksp))->r8))
|
||||
|
||||
static inline struct thread_info *current_thread_info(void)
|
||||
{
|
||||
unsigned long sp;
|
||||
|
Reference in New Issue
Block a user