mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
ARM updates for v6.5-rc1
Development updates for v6.5-rc1 - lots of build cleanups from Arnd spread throughout the arch/arm tree - replace strlcpy() with the preferred strscpy() - use sign_extend32() in the module linker - drop handle_irq() machine descriptor method -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuNNh8scc2k/wOAE+9OeQG+StrGQFAmSZjNMACgkQ9OeQG+St rGSbJRAAqs95KdLOplvEOmTpjmtO5QpiIHDvkM6jM8lnMDoskWYW2evr7awzltUH unOhHaWNqDKkBCgHxGl76uXZCLI4u65NFxej7x7u1hl2vREiV4V0Pb4h3vZZwPDv 1tX0LVCqYjCmOT5gXbDKkuL3F3x4uvdXO3ne0C46Co1lZ6Alc7xd5/1fByyDvuqv gxy0UDyJwVVsAQiYc9VcIpYttd05zDRetTRu4ez+f+hsHwOgCEe6ePlBL3TwkpQ0 BGxXM1Vg9b9fpepDR7Zb06nfPtilz8mP9H/BBIMHf9/YDK9SAuqVMoZlzEb2Qfol SvgPZGYq2Al+ggOJgiOIgTtBasdF21w8E3WVZ0+4BWv+G+tlq3IVtf+h7HhOlOTj NUwQJh9RYIZEdu9VEUFbxuguv2/e6xN7adenyXwnvGj3csTW6ujh2NGRT+bhKwxf UtvAAsr8opWuU/lFFgS3HzMC1mFpJYbzT+82yxY2ho/dihSN+gMh3SB3avKfl5hY MLbgAVukKv1tBbihwimOiNPQEFI3sGmgKG8R3mj/WHESG4mFsU8AxLokGs1ADPtO zP9SuugzsxldpqT4VBdgl5QZ7bFYevHyVMus5zRRvGudJKTP6K/8C0KBu3vfJKs9 1COxGcBEb6d2mspn+POoa+VBGB2Q+v87ld7GTXDN3MmQF1ExD4g= =/AbD -----END PGP SIGNATURE----- Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm Pull ARM updates from Russell King: - lots of build cleanups from Arnd spread throughout the arch/arm tree - replace strlcpy() with the preferred strscpy() - use sign_extend32() in the module linker - drop handle_irq() machine descriptor method * tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm: ARM: 9315/1: fiq: include asm/mach/irq.h for prototypes ARM: 9314/1: tcm: move tcm_init() prototype to asm/tcm.h ARM: 9313/1: vdso: add missing prototypes ARM: 9312/1: vfp: include asm/neon.h in vfpmodule.c ARM: 9311/1: decompressor: move function prototypes to misc.h ARM: 9310/1: xip-kernel: add __inflate_kernel_data prototype ARM: 9309/1: add missing syscall prototypes ARM: 9308/1: move setup functions to header ARM: 9307/1: nommu: include asm/idmap.h ARM: 9306/1: cacheflush: avoid __flush_anon_page() missing-prototype warning ARM: 9305/1: add clear/copy_user_highpage declarations ARM: 9304/1: add prototype for function called only from asm ARM: 9303/1: kprobes: avoid missing-declaration warnings ARM: 9302/1: traps: hide unused functions on NOMMU ARM: 9301/1: dma-mapping: hide unused dma_contiguous_early_fixup function ARM: 9300/1: Replace all non-returning strlcpy with strscpy ARM: 9299/1: module: use sign_extend32() to extend the signedness ARM: 9298/1: Drop custom mdesc->handle_irq()
This commit is contained in:
commit
2b603cd5b7
@ -2,6 +2,7 @@
|
||||
#include <linux/libfdt_env.h>
|
||||
#include <asm/setup.h>
|
||||
#include <libfdt.h>
|
||||
#include "misc.h"
|
||||
|
||||
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
||||
#define do_extend_cmdline 1
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/libfdt.h>
|
||||
#include <linux/sizes.h>
|
||||
#include "misc.h"
|
||||
|
||||
static const void *get_prop(const void *fdt, const char *node_path,
|
||||
const char *property, int minlen)
|
||||
|
@ -103,9 +103,6 @@ static void putstr(const char *ptr)
|
||||
/*
|
||||
* gzip declarations
|
||||
*/
|
||||
extern char input_data[];
|
||||
extern char input_data_end[];
|
||||
|
||||
unsigned char *output_data;
|
||||
|
||||
unsigned long free_mem_ptr;
|
||||
@ -131,9 +128,6 @@ asmlinkage void __div0(void)
|
||||
error("Attempting division by 0!");
|
||||
}
|
||||
|
||||
extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
|
||||
|
||||
|
||||
void
|
||||
decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
|
||||
unsigned long free_mem_ptr_end_p,
|
||||
|
@ -6,5 +6,16 @@
|
||||
void error(char *x) __noreturn;
|
||||
extern unsigned long free_mem_ptr;
|
||||
extern unsigned long free_mem_end_ptr;
|
||||
void __div0(void);
|
||||
void
|
||||
decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
|
||||
unsigned long free_mem_ptr_end_p, int arch_id);
|
||||
void fortify_panic(const char *name);
|
||||
int atags_to_fdt(void *atag_list, void *fdt, int total_space);
|
||||
uint32_t fdt_check_mem_start(uint32_t mem_start, const void *fdt);
|
||||
int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
|
||||
|
||||
extern char input_data[];
|
||||
extern char input_data_end[];
|
||||
|
||||
#endif
|
||||
|
@ -75,6 +75,10 @@ static inline bool arch_syscall_match_sym_name(const char *sym,
|
||||
return !strcasecmp(sym, name);
|
||||
}
|
||||
|
||||
void prepare_ftrace_return(unsigned long *parent, unsigned long self,
|
||||
unsigned long frame_pointer,
|
||||
unsigned long stack_pointer);
|
||||
|
||||
#endif /* ifndef __ASSEMBLY__ */
|
||||
|
||||
#endif /* _ASM_ARM_FTRACE */
|
||||
|
@ -56,7 +56,6 @@ struct machine_desc {
|
||||
void (*init_time)(void);
|
||||
void (*init_machine)(void);
|
||||
void (*init_late)(void);
|
||||
void (*handle_irq)(struct pt_regs *);
|
||||
void (*restart)(enum reboot_mode, const char *);
|
||||
};
|
||||
|
||||
|
@ -113,6 +113,28 @@ struct cpu_user_fns {
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
};
|
||||
|
||||
void fa_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void fa_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
void feroceon_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void feroceon_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
void v4_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void v4_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
void v4wb_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void v4wb_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
void v4wt_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void v4wt_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void xsc3_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
|
||||
unsigned long vaddr, struct vm_area_struct *vma);
|
||||
void xscale_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
|
||||
|
||||
#ifdef MULTI_USER
|
||||
extern struct cpu_user_fns cpu_user;
|
||||
|
||||
|
@ -193,5 +193,8 @@ static inline unsigned long it_advance(unsigned long cpsr)
|
||||
return cpsr;
|
||||
}
|
||||
|
||||
int syscall_trace_enter(struct pt_regs *regs);
|
||||
void syscall_trace_exit(struct pt_regs *regs);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif
|
||||
|
@ -28,4 +28,11 @@ extern void save_atags(const struct tag *tags);
|
||||
static inline void save_atags(const struct tag *tags) { }
|
||||
#endif
|
||||
|
||||
struct machine_desc;
|
||||
void init_default_cache_policy(unsigned long);
|
||||
void paging_init(const struct machine_desc *desc);
|
||||
void early_mm_init(const struct machine_desc *);
|
||||
void adjust_lowmem_bounds(void);
|
||||
void setup_dma_zone(const struct machine_desc *desc);
|
||||
|
||||
#endif
|
||||
|
@ -22,4 +22,9 @@ typedef struct {
|
||||
#define __ARCH_HAS_SA_RESTORER
|
||||
|
||||
#include <asm/sigcontext.h>
|
||||
|
||||
void do_rseq_syscall(struct pt_regs *regs);
|
||||
int do_work_pending(struct pt_regs *regs, unsigned int thread_flags,
|
||||
int syscall);
|
||||
|
||||
#endif
|
||||
|
@ -35,4 +35,8 @@ static inline void spectre_v2_update_state(unsigned int state,
|
||||
|
||||
int spectre_bhb_update_vectors(unsigned int method);
|
||||
|
||||
void cpu_v7_ca8_ibe(void);
|
||||
void cpu_v7_ca15_ibe(void);
|
||||
void cpu_v7_bugs_init(void);
|
||||
|
||||
#endif
|
||||
|
@ -13,5 +13,6 @@ extern void cpu_resume(void);
|
||||
extern void cpu_resume_no_hyp(void);
|
||||
extern void cpu_resume_arm(void);
|
||||
extern int cpu_suspend(unsigned long, int (*)(unsigned long));
|
||||
extern void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr);
|
||||
|
||||
#endif
|
||||
|
51
arch/arm/include/asm/syscalls.h
Normal file
51
arch/arm/include/asm/syscalls.h
Normal file
@ -0,0 +1,51 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
#ifndef __ASM_SYSCALLS_H
|
||||
#define __ASM_SYSCALLS_H
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
struct pt_regs;
|
||||
asmlinkage int sys_sigreturn(struct pt_regs *regs);
|
||||
asmlinkage int sys_rt_sigreturn(struct pt_regs *regs);
|
||||
asmlinkage long sys_arm_fadvise64_64(int fd, int advice,
|
||||
loff_t offset, loff_t len);
|
||||
|
||||
struct oldabi_stat64;
|
||||
asmlinkage long sys_oabi_stat64(const char __user * filename,
|
||||
struct oldabi_stat64 __user * statbuf);
|
||||
asmlinkage long sys_oabi_lstat64(const char __user * filename,
|
||||
struct oldabi_stat64 __user * statbuf);
|
||||
asmlinkage long sys_oabi_fstat64(unsigned long fd,
|
||||
struct oldabi_stat64 __user * statbuf);
|
||||
asmlinkage long sys_oabi_fstatat64(int dfd,
|
||||
const char __user *filename,
|
||||
struct oldabi_stat64 __user *statbuf,
|
||||
int flag);
|
||||
asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd,
|
||||
unsigned long arg);
|
||||
struct oabi_epoll_event;
|
||||
asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,
|
||||
struct oabi_epoll_event __user *event);
|
||||
struct oabi_sembuf;
|
||||
struct old_timespec32;
|
||||
asmlinkage long sys_oabi_semtimedop(int semid,
|
||||
struct oabi_sembuf __user *tsops,
|
||||
unsigned nsops,
|
||||
const struct old_timespec32 __user *timeout);
|
||||
asmlinkage long sys_oabi_semop(int semid, struct oabi_sembuf __user *tsops,
|
||||
unsigned nsops);
|
||||
asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
|
||||
void __user *ptr, long fifth);
|
||||
struct sockaddr;
|
||||
asmlinkage long sys_oabi_bind(int fd, struct sockaddr __user *addr, int addrlen);
|
||||
asmlinkage long sys_oabi_connect(int fd, struct sockaddr __user *addr, int addrlen);
|
||||
asmlinkage long sys_oabi_sendto(int fd, void __user *buff,
|
||||
size_t len, unsigned flags,
|
||||
struct sockaddr __user *addr,
|
||||
int addrlen);
|
||||
struct user_msghdr;
|
||||
asmlinkage long sys_oabi_sendmsg(int fd, struct user_msghdr __user *msg, unsigned flags);
|
||||
asmlinkage long sys_oabi_socketcall(int call, unsigned long __user *args);
|
||||
|
||||
#endif
|
@ -9,9 +9,7 @@
|
||||
#ifndef __ASMARM_TCM_H
|
||||
#define __ASMARM_TCM_H
|
||||
|
||||
#ifndef CONFIG_HAVE_TCM
|
||||
#error "You should not be including tcm.h unless you have a TCM!"
|
||||
#endif
|
||||
#ifdef CONFIG_HAVE_TCM
|
||||
|
||||
#include <linux/compiler.h>
|
||||
|
||||
@ -29,4 +27,11 @@ void tcm_free(void *addr, size_t len);
|
||||
bool tcm_dtcm_present(void);
|
||||
bool tcm_itcm_present(void);
|
||||
|
||||
void __init tcm_init(void);
|
||||
#else
|
||||
/* No TCM support, just blank inlines to be optimized out */
|
||||
static inline void tcm_init(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
@ -35,4 +35,13 @@ extern void ptrace_break(struct pt_regs *regs);
|
||||
|
||||
extern void *vectors_page;
|
||||
|
||||
asmlinkage void dump_backtrace_stm(u32 *stack, u32 instruction, const char *loglvl);
|
||||
asmlinkage void do_undefinstr(struct pt_regs *regs);
|
||||
asmlinkage void handle_fiq_as_nmi(struct pt_regs *regs);
|
||||
asmlinkage void bad_mode(struct pt_regs *regs, int reason);
|
||||
asmlinkage int arm_syscall(int no, struct pt_regs *regs);
|
||||
asmlinkage void baddataabort(int code, unsigned long instr, struct pt_regs *regs);
|
||||
asmlinkage void __div0(void);
|
||||
asmlinkage void handle_bad_stack(struct pt_regs *regs);
|
||||
|
||||
#endif
|
||||
|
@ -40,6 +40,10 @@ extern void unwind_table_del(struct unwind_table *tab);
|
||||
extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk,
|
||||
const char *loglvl);
|
||||
|
||||
void __aeabi_unwind_cpp_pr0(void);
|
||||
void __aeabi_unwind_cpp_pr1(void);
|
||||
void __aeabi_unwind_cpp_pr2(void);
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
#ifdef CONFIG_ARM_UNWIND
|
||||
|
@ -24,6 +24,11 @@ static inline void arm_install_vdso(struct mm_struct *mm, unsigned long addr)
|
||||
|
||||
#endif /* CONFIG_VDSO */
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock, struct old_timespec32 *ts);
|
||||
int __vdso_clock_gettime64(clockid_t clock, struct __kernel_timespec *ts);
|
||||
int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz);
|
||||
int __vdso_clock_getres(clockid_t clock_id, struct old_timespec32 *res);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
@ -102,6 +102,7 @@
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
void vfp_disable(void);
|
||||
void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs);
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_VFP_H */
|
||||
|
@ -127,7 +127,7 @@ static int __init parse_tag_cmdline(const struct tag *tag)
|
||||
#elif defined(CONFIG_CMDLINE_FORCE)
|
||||
pr_warn("Ignoring tag cmdline (using the default kernel command line)\n");
|
||||
#else
|
||||
strlcpy(default_command_line, tag->u.cmdline.cmdline,
|
||||
strscpy(default_command_line, tag->u.cmdline.cmdline,
|
||||
COMMAND_LINE_SIZE);
|
||||
#endif
|
||||
return 0;
|
||||
@ -224,7 +224,7 @@ setup_machine_tags(void *atags_vaddr, unsigned int machine_nr)
|
||||
}
|
||||
|
||||
/* parse_early_param needs a boot_command_line */
|
||||
strlcpy(boot_command_line, from, COMMAND_LINE_SIZE);
|
||||
strscpy(boot_command_line, from, COMMAND_LINE_SIZE);
|
||||
|
||||
return mdesc;
|
||||
}
|
||||
|
@ -45,6 +45,7 @@
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/cp15.h>
|
||||
#include <asm/fiq.h>
|
||||
#include <asm/mach/irq.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/traps.h>
|
||||
|
||||
|
@ -8,16 +8,13 @@
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/zutil.h>
|
||||
#include "head.h"
|
||||
|
||||
/* for struct inflate_state */
|
||||
#include "../../../lib/zlib_inflate/inftrees.h"
|
||||
#include "../../../lib/zlib_inflate/inflate.h"
|
||||
#include "../../../lib/zlib_inflate/infutil.h"
|
||||
|
||||
extern char __data_loc[];
|
||||
extern char _edata_loc[];
|
||||
extern char _sdata[];
|
||||
|
||||
/*
|
||||
* This code is called very early during the boot process to decompress
|
||||
* the .data segment stored compressed in ROM. Therefore none of the global
|
||||
|
7
arch/arm/kernel/head.h
Normal file
7
arch/arm/kernel/head.h
Normal file
@ -0,0 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
extern char __data_loc[];
|
||||
extern char _edata_loc[];
|
||||
extern char _sdata[];
|
||||
|
||||
int __init __inflate_kernel_data(void);
|
@ -169,8 +169,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||
|
||||
offset = __mem_to_opcode_arm(*(u32 *)loc);
|
||||
offset = (offset & 0x00ffffff) << 2;
|
||||
if (offset & 0x02000000)
|
||||
offset -= 0x04000000;
|
||||
offset = sign_extend32(offset, 25);
|
||||
|
||||
offset += sym->st_value - loc;
|
||||
|
||||
@ -236,7 +235,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||
case R_ARM_MOVT_PREL:
|
||||
offset = tmp = __mem_to_opcode_arm(*(u32 *)loc);
|
||||
offset = ((offset & 0xf0000) >> 4) | (offset & 0xfff);
|
||||
offset = (offset ^ 0x8000) - 0x8000;
|
||||
offset = sign_extend32(offset, 15);
|
||||
|
||||
offset += sym->st_value;
|
||||
if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_PREL ||
|
||||
@ -344,8 +343,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||
((~(j2 ^ sign) & 1) << 22) |
|
||||
((upper & 0x03ff) << 12) |
|
||||
((lower & 0x07ff) << 1);
|
||||
if (offset & 0x01000000)
|
||||
offset -= 0x02000000;
|
||||
offset = sign_extend32(offset, 24);
|
||||
offset += sym->st_value - loc;
|
||||
|
||||
/*
|
||||
@ -401,7 +399,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||
offset = ((upper & 0x000f) << 12) |
|
||||
((upper & 0x0400) << 1) |
|
||||
((lower & 0x7000) >> 4) | (lower & 0x00ff);
|
||||
offset = (offset ^ 0x8000) - 0x8000;
|
||||
offset = sign_extend32(offset, 15);
|
||||
offset += sym->st_value;
|
||||
|
||||
if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_PREL ||
|
||||
|
@ -76,13 +76,6 @@ static int __init fpe_setup(char *line)
|
||||
__setup("fpe=", fpe_setup);
|
||||
#endif
|
||||
|
||||
extern void init_default_cache_policy(unsigned long);
|
||||
extern void paging_init(const struct machine_desc *desc);
|
||||
extern void early_mm_init(const struct machine_desc *);
|
||||
extern void adjust_lowmem_bounds(void);
|
||||
extern enum reboot_mode reboot_mode;
|
||||
extern void setup_dma_zone(const struct machine_desc *desc);
|
||||
|
||||
unsigned int processor_id;
|
||||
EXPORT_SYMBOL(processor_id);
|
||||
unsigned int __machine_arch_type __read_mostly;
|
||||
@ -1142,7 +1135,7 @@ void __init setup_arch(char **cmdline_p)
|
||||
setup_initial_init_mm(_text, _etext, _edata, _end);
|
||||
|
||||
/* populate cmd_line too for later use, preserving boot_command_line */
|
||||
strlcpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE);
|
||||
strscpy(cmd_line, boot_command_line, COMMAND_LINE_SIZE);
|
||||
*cmdline_p = cmd_line;
|
||||
|
||||
early_fixmap_init();
|
||||
@ -1198,10 +1191,6 @@ void __init setup_arch(char **cmdline_p)
|
||||
|
||||
reserve_crashkernel();
|
||||
|
||||
#ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER
|
||||
handle_arch_irq = mdesc->handle_irq;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_VT
|
||||
#if defined(CONFIG_VGA_CONSOLE)
|
||||
conswitchp = &vga_con;
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <asm/traps.h>
|
||||
#include <asm/unistd.h>
|
||||
#include <asm/vfp.h>
|
||||
#include <asm/syscalls.h>
|
||||
|
||||
#include "signal.h"
|
||||
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <linux/ipc.h>
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/slab.h>
|
||||
#include <asm/syscalls.h>
|
||||
|
||||
/*
|
||||
* Since loff_t is a 64 bit type we avoid a lot of ABI hassle
|
||||
|
@ -10,6 +10,8 @@
|
||||
* Copyright: MontaVista Software, Inc.
|
||||
*/
|
||||
|
||||
#include <asm/syscalls.h>
|
||||
|
||||
/*
|
||||
* The legacy ABI and the new ARM EABI have different rules making some
|
||||
* syscalls incompatible especially with structure arguments.
|
||||
|
@ -756,6 +756,7 @@ void __readwrite_bug(const char *fn)
|
||||
}
|
||||
EXPORT_SYMBOL(__readwrite_bug);
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
void __pte_error(const char *file, int line, pte_t pte)
|
||||
{
|
||||
pr_err("%s:%d: bad pte %08llx.\n", file, line, (long long)pte_val(pte));
|
||||
@ -770,6 +771,7 @@ void __pgd_error(const char *file, int line, pgd_t pgd)
|
||||
{
|
||||
pr_err("%s:%d: bad pgd %08llx.\n", file, line, (long long)pgd_val(pgd));
|
||||
}
|
||||
#endif
|
||||
|
||||
asmlinkage void __div0(void)
|
||||
{
|
||||
|
@ -135,7 +135,7 @@ static Elf32_Sym * __init find_symbol(struct elfinfo *lib, const char *symname)
|
||||
|
||||
if (lib->dynsym[i].st_name == 0)
|
||||
continue;
|
||||
strlcpy(name, lib->dynstr + lib->dynsym[i].st_name,
|
||||
strscpy(name, lib->dynstr + lib->dynsym[i].st_name,
|
||||
MAX_SYMNAME);
|
||||
c = strchr(name, '@');
|
||||
if (c)
|
||||
|
@ -11,7 +11,6 @@
|
||||
#include <linux/err.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irqchip/mxs.h>
|
||||
#include <linux/reboot.h>
|
||||
#include <linux/micrel_phy.h>
|
||||
#include <linux/of_address.h>
|
||||
@ -472,7 +471,6 @@ static const char *const mxs_dt_compat[] __initconst = {
|
||||
};
|
||||
|
||||
DT_MACHINE_START(MXS, "Freescale MXS (Device Tree)")
|
||||
.handle_irq = icoll_handle_irq,
|
||||
.init_machine = mxs_machine_init,
|
||||
.init_late = mxs_pm_init,
|
||||
.dt_compat = mxs_dt_compat,
|
||||
|
@ -877,7 +877,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
|
||||
.map_io = ams_delta_map_io,
|
||||
.init_early = omap1_init_early,
|
||||
.init_irq = omap1_init_irq,
|
||||
.handle_irq = omap1_handle_irq,
|
||||
.init_machine = ams_delta_init,
|
||||
.init_late = ams_delta_init_late,
|
||||
.init_time = omap1_timer_init,
|
||||
|
@ -291,7 +291,6 @@ MACHINE_START(NOKIA770, "Nokia 770")
|
||||
.map_io = omap1_map_io,
|
||||
.init_early = omap1_init_early,
|
||||
.init_irq = omap1_init_irq,
|
||||
.handle_irq = omap1_handle_irq,
|
||||
.init_machine = omap_nokia770_init,
|
||||
.init_late = omap1_init_late,
|
||||
.init_time = omap1_timer_init,
|
||||
|
@ -389,7 +389,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
|
||||
.map_io = omap1_map_io,
|
||||
.init_early = omap1_init_early,
|
||||
.init_irq = omap1_init_irq,
|
||||
.handle_irq = omap1_handle_irq,
|
||||
.init_machine = osk_init,
|
||||
.init_late = omap1_init_late,
|
||||
.init_time = omap1_timer_init,
|
||||
|
@ -259,7 +259,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
|
||||
.map_io = omap1_map_io,
|
||||
.init_early = omap1_init_early,
|
||||
.init_irq = omap1_init_irq,
|
||||
.handle_irq = omap1_handle_irq,
|
||||
.init_machine = omap_palmte_init,
|
||||
.init_late = omap1_init_late,
|
||||
.init_time = omap1_timer_init,
|
||||
|
@ -338,7 +338,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
|
||||
.map_io = omap1_map_io,
|
||||
.init_early = omap1_init_early,
|
||||
.init_irq = omap1_init_irq,
|
||||
.handle_irq = omap1_handle_irq,
|
||||
.init_machine = omap_sx1_init,
|
||||
.init_late = omap1_init_late,
|
||||
.init_time = omap1_timer_init,
|
||||
|
@ -37,6 +37,7 @@
|
||||
*/
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/interrupt.h>
|
||||
@ -254,4 +255,6 @@ void __init omap1_init_irq(void)
|
||||
ct = irq_data_get_chip_type(d);
|
||||
ct->chip.irq_unmask(d);
|
||||
}
|
||||
|
||||
set_handle_irq(omap1_handle_irq);
|
||||
}
|
||||
|
@ -233,7 +233,6 @@ MACHINE_START(GUMSTIX, "Gumstix")
|
||||
.map_io = pxa25x_map_io,
|
||||
.nr_irqs = PXA_NR_IRQS,
|
||||
.init_irq = pxa25x_init_irq,
|
||||
.handle_irq = pxa25x_handle_irq,
|
||||
.init_time = pxa_timer_init,
|
||||
.init_machine = gumstix_init,
|
||||
.restart = pxa_restart,
|
||||
|
@ -143,6 +143,7 @@ set_pwer:
|
||||
void __init pxa25x_init_irq(void)
|
||||
{
|
||||
pxa_init_irq(32, pxa25x_set_wake);
|
||||
set_handle_irq(pxa25x_handle_irq);
|
||||
}
|
||||
|
||||
static int __init __init
|
||||
|
@ -228,6 +228,7 @@ static int pxa27x_set_wake(struct irq_data *d, unsigned int on)
|
||||
void __init pxa27x_init_irq(void)
|
||||
{
|
||||
pxa_init_irq(34, pxa27x_set_wake);
|
||||
set_handle_irq(pxa27x_handle_irq);
|
||||
}
|
||||
|
||||
static int __init
|
||||
|
@ -1043,7 +1043,6 @@ MACHINE_START(SPITZ, "SHARP Spitz")
|
||||
.map_io = pxa27x_map_io,
|
||||
.nr_irqs = PXA_NR_IRQS,
|
||||
.init_irq = pxa27x_init_irq,
|
||||
.handle_irq = pxa27x_handle_irq,
|
||||
.init_machine = spitz_init,
|
||||
.init_time = pxa_timer_init,
|
||||
.restart = spitz_restart,
|
||||
@ -1056,7 +1055,6 @@ MACHINE_START(BORZOI, "SHARP Borzoi")
|
||||
.map_io = pxa27x_map_io,
|
||||
.nr_irqs = PXA_NR_IRQS,
|
||||
.init_irq = pxa27x_init_irq,
|
||||
.handle_irq = pxa27x_handle_irq,
|
||||
.init_machine = spitz_init,
|
||||
.init_time = pxa_timer_init,
|
||||
.restart = spitz_restart,
|
||||
@ -1069,7 +1067,6 @@ MACHINE_START(AKITA, "SHARP Akita")
|
||||
.map_io = pxa27x_map_io,
|
||||
.nr_irqs = PXA_NR_IRQS,
|
||||
.init_irq = pxa27x_init_irq,
|
||||
.handle_irq = pxa27x_handle_irq,
|
||||
.init_machine = spitz_init,
|
||||
.init_time = pxa_timer_init,
|
||||
.restart = spitz_restart,
|
||||
|
@ -258,12 +258,14 @@ static struct dma_contig_early_reserve dma_mmu_remap[MAX_CMA_AREAS] __initdata;
|
||||
|
||||
static int dma_mmu_remap_num __initdata;
|
||||
|
||||
#ifdef CONFIG_DMA_CMA
|
||||
void __init dma_contiguous_early_fixup(phys_addr_t base, unsigned long size)
|
||||
{
|
||||
dma_mmu_remap[dma_mmu_remap_num].base = base;
|
||||
dma_mmu_remap[dma_mmu_remap_num].size = size;
|
||||
dma_mmu_remap_num++;
|
||||
}
|
||||
#endif
|
||||
|
||||
void __init dma_contiguous_remap(void)
|
||||
{
|
||||
|
@ -37,5 +37,9 @@ static inline int fsr_fs(unsigned int fsr)
|
||||
|
||||
void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
|
||||
void early_abt_enable(void);
|
||||
asmlinkage void do_DataAbort(unsigned long addr, unsigned int fsr,
|
||||
struct pt_regs *regs);
|
||||
asmlinkage void do_PrefetchAbort(unsigned long addr, unsigned int ifsr,
|
||||
struct pt_regs *regs);
|
||||
|
||||
#endif /* __ARCH_ARM_FAULT_H */
|
||||
|
@ -354,6 +354,7 @@ EXPORT_SYMBOL(flush_dcache_page);
|
||||
* memcpy() to/from page
|
||||
* if written to page, flush_dcache_page()
|
||||
*/
|
||||
void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr);
|
||||
void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
|
||||
{
|
||||
unsigned long pfn;
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <asm/sections.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/smp_plat.h>
|
||||
#include <asm/tcm.h>
|
||||
#include <asm/tlb.h>
|
||||
#include <asm/highmem.h>
|
||||
#include <asm/system_info.h>
|
||||
@ -37,7 +38,6 @@
|
||||
|
||||
#include "fault.h"
|
||||
#include "mm.h"
|
||||
#include "tcm.h"
|
||||
|
||||
extern unsigned long __atags_pointer;
|
||||
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include <asm/cputype.h>
|
||||
#include <asm/mpu.h>
|
||||
#include <asm/procinfo.h>
|
||||
#include <asm/idmap.h>
|
||||
|
||||
#include "mm.h"
|
||||
|
||||
|
@ -1,17 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2008-2009 ST-Ericsson AB
|
||||
* TCM memory handling for ARM systems
|
||||
*
|
||||
* Author: Linus Walleij <linus.walleij@stericsson.com>
|
||||
* Author: Rickard Andersson <rickard.andersson@stericsson.com>
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_HAVE_TCM
|
||||
void __init tcm_init(void);
|
||||
#else
|
||||
/* No TCM support, just blank inlines to be optimized out */
|
||||
static inline void tcm_init(void)
|
||||
{
|
||||
}
|
||||
#endif
|
@ -40,7 +40,7 @@ enum probes_insn checker_stack_use_imm_0xx(probes_opcode_t insn,
|
||||
* Different from other insn uses imm8, the real addressing offset of
|
||||
* STRD in T32 encoding should be imm8 * 4. See ARMARM description.
|
||||
*/
|
||||
enum probes_insn checker_stack_use_t32strd(probes_opcode_t insn,
|
||||
static enum probes_insn checker_stack_use_t32strd(probes_opcode_t insn,
|
||||
struct arch_probes_insn *asi,
|
||||
const struct decode_header *h)
|
||||
{
|
||||
|
@ -233,7 +233,7 @@ singlestep(struct kprobe *p, struct pt_regs *regs, struct kprobe_ctlblk *kcb)
|
||||
* kprobe, and that level is reserved for user kprobe handlers, so we can't
|
||||
* risk encountering a new kprobe in an interrupt handler.
|
||||
*/
|
||||
void __kprobes kprobe_handler(struct pt_regs *regs)
|
||||
static void __kprobes kprobe_handler(struct pt_regs *regs)
|
||||
{
|
||||
struct kprobe *p, *cur;
|
||||
struct kprobe_ctlblk *kcb;
|
||||
|
@ -145,8 +145,6 @@ __arch_remove_optimized_kprobe(struct optimized_kprobe *op, int dirty)
|
||||
}
|
||||
}
|
||||
|
||||
extern void kprobe_handler(struct pt_regs *regs);
|
||||
|
||||
static void
|
||||
optimized_callback(struct optimized_kprobe *op, struct pt_regs *regs)
|
||||
{
|
||||
|
@ -720,7 +720,7 @@ static const char coverage_register_lookup[16] = {
|
||||
[REG_TYPE_NOSPPCX] = COVERAGE_ANY_REG | COVERAGE_SP,
|
||||
};
|
||||
|
||||
unsigned coverage_start_registers(const struct decode_header *h)
|
||||
static unsigned coverage_start_registers(const struct decode_header *h)
|
||||
{
|
||||
unsigned regs = 0;
|
||||
int i;
|
||||
|
@ -454,3 +454,7 @@ void kprobe_thumb32_test_cases(void);
|
||||
#else
|
||||
void kprobe_arm_test_cases(void);
|
||||
#endif
|
||||
|
||||
void __kprobes_test_case_start(void);
|
||||
void __kprobes_test_case_end_16(void);
|
||||
void __kprobes_test_case_end_32(void);
|
||||
|
@ -6,6 +6,8 @@
|
||||
*/
|
||||
#include <linux/time.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/vdso.h>
|
||||
#include <asm/unwind.h>
|
||||
|
||||
int __vdso_clock_gettime(clockid_t clock,
|
||||
struct old_timespec32 *ts)
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <asm/thread_notify.h>
|
||||
#include <asm/traps.h>
|
||||
#include <asm/vfp.h>
|
||||
#include <asm/neon.h>
|
||||
|
||||
#include "vfpinstr.h"
|
||||
#include "vfp.h"
|
||||
|
@ -201,6 +201,7 @@ static int __init icoll_of_init(struct device_node *np,
|
||||
stmp_reset_block(icoll_priv.ctrl);
|
||||
|
||||
icoll_add_domain(np, ICOLL_NUM_IRQS);
|
||||
set_handle_irq(icoll_handle_irq);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2013 Freescale Semiconductor, Inc.
|
||||
*/
|
||||
|
||||
#ifndef __LINUX_IRQCHIP_MXS_H
|
||||
#define __LINUX_IRQCHIP_MXS_H
|
||||
|
||||
extern void icoll_handle_irq(struct pt_regs *);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user