mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 06:33:07 +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
55 changed files with 185 additions and 80 deletions
|
@ -2,6 +2,7 @@
|
||||||
#include <linux/libfdt_env.h>
|
#include <linux/libfdt_env.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <libfdt.h>
|
#include <libfdt.h>
|
||||||
|
#include "misc.h"
|
||||||
|
|
||||||
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
||||||
#define do_extend_cmdline 1
|
#define do_extend_cmdline 1
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/libfdt.h>
|
#include <linux/libfdt.h>
|
||||||
#include <linux/sizes.h>
|
#include <linux/sizes.h>
|
||||||
|
#include "misc.h"
|
||||||
|
|
||||||
static const void *get_prop(const void *fdt, const char *node_path,
|
static const void *get_prop(const void *fdt, const char *node_path,
|
||||||
const char *property, int minlen)
|
const char *property, int minlen)
|
||||||
|
|
|
@ -103,9 +103,6 @@ static void putstr(const char *ptr)
|
||||||
/*
|
/*
|
||||||
* gzip declarations
|
* gzip declarations
|
||||||
*/
|
*/
|
||||||
extern char input_data[];
|
|
||||||
extern char input_data_end[];
|
|
||||||
|
|
||||||
unsigned char *output_data;
|
unsigned char *output_data;
|
||||||
|
|
||||||
unsigned long free_mem_ptr;
|
unsigned long free_mem_ptr;
|
||||||
|
@ -131,9 +128,6 @@ asmlinkage void __div0(void)
|
||||||
error("Attempting division by 0!");
|
error("Attempting division by 0!");
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x));
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
|
decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
|
||||||
unsigned long free_mem_ptr_end_p,
|
unsigned long free_mem_ptr_end_p,
|
||||||
|
|
|
@ -6,5 +6,16 @@
|
||||||
void error(char *x) __noreturn;
|
void error(char *x) __noreturn;
|
||||||
extern unsigned long free_mem_ptr;
|
extern unsigned long free_mem_ptr;
|
||||||
extern unsigned long free_mem_end_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
|
#endif
|
||||||
|
|
|
@ -75,6 +75,10 @@ static inline bool arch_syscall_match_sym_name(const char *sym,
|
||||||
return !strcasecmp(sym, name);
|
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 /* ifndef __ASSEMBLY__ */
|
||||||
|
|
||||||
#endif /* _ASM_ARM_FTRACE */
|
#endif /* _ASM_ARM_FTRACE */
|
||||||
|
|
|
@ -56,7 +56,6 @@ struct machine_desc {
|
||||||
void (*init_time)(void);
|
void (*init_time)(void);
|
||||||
void (*init_machine)(void);
|
void (*init_machine)(void);
|
||||||
void (*init_late)(void);
|
void (*init_late)(void);
|
||||||
void (*handle_irq)(struct pt_regs *);
|
|
||||||
void (*restart)(enum reboot_mode, const char *);
|
void (*restart)(enum reboot_mode, const char *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,28 @@ struct cpu_user_fns {
|
||||||
unsigned long vaddr, struct vm_area_struct *vma);
|
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
|
#ifdef MULTI_USER
|
||||||
extern struct cpu_user_fns cpu_user;
|
extern struct cpu_user_fns cpu_user;
|
||||||
|
|
||||||
|
|
|
@ -193,5 +193,8 @@ static inline unsigned long it_advance(unsigned long cpsr)
|
||||||
return cpsr;
|
return cpsr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int syscall_trace_enter(struct pt_regs *regs);
|
||||||
|
void syscall_trace_exit(struct pt_regs *regs);
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -28,4 +28,11 @@ extern void save_atags(const struct tag *tags);
|
||||||
static inline void save_atags(const struct tag *tags) { }
|
static inline void save_atags(const struct tag *tags) { }
|
||||||
#endif
|
#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
|
#endif
|
||||||
|
|
|
@ -22,4 +22,9 @@ typedef struct {
|
||||||
#define __ARCH_HAS_SA_RESTORER
|
#define __ARCH_HAS_SA_RESTORER
|
||||||
|
|
||||||
#include <asm/sigcontext.h>
|
#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
|
#endif
|
||||||
|
|
|
@ -35,4 +35,8 @@ static inline void spectre_v2_update_state(unsigned int state,
|
||||||
|
|
||||||
int spectre_bhb_update_vectors(unsigned int method);
|
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
|
#endif
|
||||||
|
|
|
@ -13,5 +13,6 @@ extern void cpu_resume(void);
|
||||||
extern void cpu_resume_no_hyp(void);
|
extern void cpu_resume_no_hyp(void);
|
||||||
extern void cpu_resume_arm(void);
|
extern void cpu_resume_arm(void);
|
||||||
extern int cpu_suspend(unsigned long, int (*)(unsigned long));
|
extern int cpu_suspend(unsigned long, int (*)(unsigned long));
|
||||||
|
extern void __cpu_suspend_save(u32 *ptr, u32 ptrsz, u32 sp, u32 *save_ptr);
|
||||||
|
|
||||||
#endif
|
#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
|
#ifndef __ASMARM_TCM_H
|
||||||
#define __ASMARM_TCM_H
|
#define __ASMARM_TCM_H
|
||||||
|
|
||||||
#ifndef CONFIG_HAVE_TCM
|
#ifdef CONFIG_HAVE_TCM
|
||||||
#error "You should not be including tcm.h unless you have a TCM!"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
|
||||||
|
@ -29,4 +27,11 @@ void tcm_free(void *addr, size_t len);
|
||||||
bool tcm_dtcm_present(void);
|
bool tcm_dtcm_present(void);
|
||||||
bool tcm_itcm_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
|
#endif
|
||||||
|
|
|
@ -35,4 +35,13 @@ extern void ptrace_break(struct pt_regs *regs);
|
||||||
|
|
||||||
extern void *vectors_page;
|
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
|
#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,
|
extern void unwind_backtrace(struct pt_regs *regs, struct task_struct *tsk,
|
||||||
const char *loglvl);
|
const char *loglvl);
|
||||||
|
|
||||||
|
void __aeabi_unwind_cpp_pr0(void);
|
||||||
|
void __aeabi_unwind_cpp_pr1(void);
|
||||||
|
void __aeabi_unwind_cpp_pr2(void);
|
||||||
|
|
||||||
#endif /* !__ASSEMBLY__ */
|
#endif /* !__ASSEMBLY__ */
|
||||||
|
|
||||||
#ifdef CONFIG_ARM_UNWIND
|
#ifdef CONFIG_ARM_UNWIND
|
||||||
|
|
|
@ -24,6 +24,11 @@ static inline void arm_install_vdso(struct mm_struct *mm, unsigned long addr)
|
||||||
|
|
||||||
#endif /* CONFIG_VDSO */
|
#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 /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
|
|
|
@ -102,6 +102,7 @@
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
void vfp_disable(void);
|
void vfp_disable(void);
|
||||||
|
void VFP_bounce(u32 trigger, u32 fpexc, struct pt_regs *regs);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __ASM_VFP_H */
|
#endif /* __ASM_VFP_H */
|
||||||
|
|
|
@ -127,7 +127,7 @@ static int __init parse_tag_cmdline(const struct tag *tag)
|
||||||
#elif defined(CONFIG_CMDLINE_FORCE)
|
#elif defined(CONFIG_CMDLINE_FORCE)
|
||||||
pr_warn("Ignoring tag cmdline (using the default kernel command line)\n");
|
pr_warn("Ignoring tag cmdline (using the default kernel command line)\n");
|
||||||
#else
|
#else
|
||||||
strlcpy(default_command_line, tag->u.cmdline.cmdline,
|
strscpy(default_command_line, tag->u.cmdline.cmdline,
|
||||||
COMMAND_LINE_SIZE);
|
COMMAND_LINE_SIZE);
|
||||||
#endif
|
#endif
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -224,7 +224,7 @@ setup_machine_tags(void *atags_vaddr, unsigned int machine_nr)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* parse_early_param needs a boot_command_line */
|
/* 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;
|
return mdesc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/cp15.h>
|
#include <asm/cp15.h>
|
||||||
#include <asm/fiq.h>
|
#include <asm/fiq.h>
|
||||||
|
#include <asm/mach/irq.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
#include <asm/traps.h>
|
#include <asm/traps.h>
|
||||||
|
|
||||||
|
|
|
@ -8,16 +8,13 @@
|
||||||
|
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/zutil.h>
|
#include <linux/zutil.h>
|
||||||
|
#include "head.h"
|
||||||
|
|
||||||
/* for struct inflate_state */
|
/* for struct inflate_state */
|
||||||
#include "../../../lib/zlib_inflate/inftrees.h"
|
#include "../../../lib/zlib_inflate/inftrees.h"
|
||||||
#include "../../../lib/zlib_inflate/inflate.h"
|
#include "../../../lib/zlib_inflate/inflate.h"
|
||||||
#include "../../../lib/zlib_inflate/infutil.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
|
* This code is called very early during the boot process to decompress
|
||||||
* the .data segment stored compressed in ROM. Therefore none of the global
|
* 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 = __mem_to_opcode_arm(*(u32 *)loc);
|
||||||
offset = (offset & 0x00ffffff) << 2;
|
offset = (offset & 0x00ffffff) << 2;
|
||||||
if (offset & 0x02000000)
|
offset = sign_extend32(offset, 25);
|
||||||
offset -= 0x04000000;
|
|
||||||
|
|
||||||
offset += sym->st_value - loc;
|
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:
|
case R_ARM_MOVT_PREL:
|
||||||
offset = tmp = __mem_to_opcode_arm(*(u32 *)loc);
|
offset = tmp = __mem_to_opcode_arm(*(u32 *)loc);
|
||||||
offset = ((offset & 0xf0000) >> 4) | (offset & 0xfff);
|
offset = ((offset & 0xf0000) >> 4) | (offset & 0xfff);
|
||||||
offset = (offset ^ 0x8000) - 0x8000;
|
offset = sign_extend32(offset, 15);
|
||||||
|
|
||||||
offset += sym->st_value;
|
offset += sym->st_value;
|
||||||
if (ELF32_R_TYPE(rel->r_info) == R_ARM_MOVT_PREL ||
|
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) |
|
((~(j2 ^ sign) & 1) << 22) |
|
||||||
((upper & 0x03ff) << 12) |
|
((upper & 0x03ff) << 12) |
|
||||||
((lower & 0x07ff) << 1);
|
((lower & 0x07ff) << 1);
|
||||||
if (offset & 0x01000000)
|
offset = sign_extend32(offset, 24);
|
||||||
offset -= 0x02000000;
|
|
||||||
offset += sym->st_value - loc;
|
offset += sym->st_value - loc;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -401,7 +399,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex,
|
||||||
offset = ((upper & 0x000f) << 12) |
|
offset = ((upper & 0x000f) << 12) |
|
||||||
((upper & 0x0400) << 1) |
|
((upper & 0x0400) << 1) |
|
||||||
((lower & 0x7000) >> 4) | (lower & 0x00ff);
|
((lower & 0x7000) >> 4) | (lower & 0x00ff);
|
||||||
offset = (offset ^ 0x8000) - 0x8000;
|
offset = sign_extend32(offset, 15);
|
||||||
offset += sym->st_value;
|
offset += sym->st_value;
|
||||||
|
|
||||||
if (ELF32_R_TYPE(rel->r_info) == R_ARM_THM_MOVT_PREL ||
|
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);
|
__setup("fpe=", fpe_setup);
|
||||||
#endif
|
#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;
|
unsigned int processor_id;
|
||||||
EXPORT_SYMBOL(processor_id);
|
EXPORT_SYMBOL(processor_id);
|
||||||
unsigned int __machine_arch_type __read_mostly;
|
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);
|
setup_initial_init_mm(_text, _etext, _edata, _end);
|
||||||
|
|
||||||
/* populate cmd_line too for later use, preserving boot_command_line */
|
/* 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;
|
*cmdline_p = cmd_line;
|
||||||
|
|
||||||
early_fixmap_init();
|
early_fixmap_init();
|
||||||
|
@ -1198,10 +1191,6 @@ void __init setup_arch(char **cmdline_p)
|
||||||
|
|
||||||
reserve_crashkernel();
|
reserve_crashkernel();
|
||||||
|
|
||||||
#ifdef CONFIG_GENERIC_IRQ_MULTI_HANDLER
|
|
||||||
handle_arch_irq = mdesc->handle_irq;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_VT
|
#ifdef CONFIG_VT
|
||||||
#if defined(CONFIG_VGA_CONSOLE)
|
#if defined(CONFIG_VGA_CONSOLE)
|
||||||
conswitchp = &vga_con;
|
conswitchp = &vga_con;
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
#include <asm/traps.h>
|
#include <asm/traps.h>
|
||||||
#include <asm/unistd.h>
|
#include <asm/unistd.h>
|
||||||
#include <asm/vfp.h>
|
#include <asm/vfp.h>
|
||||||
|
#include <asm/syscalls.h>
|
||||||
|
|
||||||
#include "signal.h"
|
#include "signal.h"
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include <linux/ipc.h>
|
#include <linux/ipc.h>
|
||||||
#include <linux/uaccess.h>
|
#include <linux/uaccess.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
|
#include <asm/syscalls.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Since loff_t is a 64 bit type we avoid a lot of ABI hassle
|
* Since loff_t is a 64 bit type we avoid a lot of ABI hassle
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
* Copyright: MontaVista Software, Inc.
|
* Copyright: MontaVista Software, Inc.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <asm/syscalls.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The legacy ABI and the new ARM EABI have different rules making some
|
* The legacy ABI and the new ARM EABI have different rules making some
|
||||||
* syscalls incompatible especially with structure arguments.
|
* syscalls incompatible especially with structure arguments.
|
||||||
|
|
|
@ -756,6 +756,7 @@ void __readwrite_bug(const char *fn)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__readwrite_bug);
|
EXPORT_SYMBOL(__readwrite_bug);
|
||||||
|
|
||||||
|
#ifdef CONFIG_MMU
|
||||||
void __pte_error(const char *file, int line, pte_t pte)
|
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));
|
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));
|
pr_err("%s:%d: bad pgd %08llx.\n", file, line, (long long)pgd_val(pgd));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
asmlinkage void __div0(void)
|
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)
|
if (lib->dynsym[i].st_name == 0)
|
||||||
continue;
|
continue;
|
||||||
strlcpy(name, lib->dynstr + lib->dynsym[i].st_name,
|
strscpy(name, lib->dynstr + lib->dynsym[i].st_name,
|
||||||
MAX_SYMNAME);
|
MAX_SYMNAME);
|
||||||
c = strchr(name, '@');
|
c = strchr(name, '@');
|
||||||
if (c)
|
if (c)
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#include <linux/err.h>
|
#include <linux/err.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/irqchip/mxs.h>
|
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
#include <linux/micrel_phy.h>
|
#include <linux/micrel_phy.h>
|
||||||
#include <linux/of_address.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)")
|
DT_MACHINE_START(MXS, "Freescale MXS (Device Tree)")
|
||||||
.handle_irq = icoll_handle_irq,
|
|
||||||
.init_machine = mxs_machine_init,
|
.init_machine = mxs_machine_init,
|
||||||
.init_late = mxs_pm_init,
|
.init_late = mxs_pm_init,
|
||||||
.dt_compat = mxs_dt_compat,
|
.dt_compat = mxs_dt_compat,
|
||||||
|
|
|
@ -877,7 +877,6 @@ MACHINE_START(AMS_DELTA, "Amstrad E3 (Delta)")
|
||||||
.map_io = ams_delta_map_io,
|
.map_io = ams_delta_map_io,
|
||||||
.init_early = omap1_init_early,
|
.init_early = omap1_init_early,
|
||||||
.init_irq = omap1_init_irq,
|
.init_irq = omap1_init_irq,
|
||||||
.handle_irq = omap1_handle_irq,
|
|
||||||
.init_machine = ams_delta_init,
|
.init_machine = ams_delta_init,
|
||||||
.init_late = ams_delta_init_late,
|
.init_late = ams_delta_init_late,
|
||||||
.init_time = omap1_timer_init,
|
.init_time = omap1_timer_init,
|
||||||
|
|
|
@ -291,7 +291,6 @@ MACHINE_START(NOKIA770, "Nokia 770")
|
||||||
.map_io = omap1_map_io,
|
.map_io = omap1_map_io,
|
||||||
.init_early = omap1_init_early,
|
.init_early = omap1_init_early,
|
||||||
.init_irq = omap1_init_irq,
|
.init_irq = omap1_init_irq,
|
||||||
.handle_irq = omap1_handle_irq,
|
|
||||||
.init_machine = omap_nokia770_init,
|
.init_machine = omap_nokia770_init,
|
||||||
.init_late = omap1_init_late,
|
.init_late = omap1_init_late,
|
||||||
.init_time = omap1_timer_init,
|
.init_time = omap1_timer_init,
|
||||||
|
|
|
@ -389,7 +389,6 @@ MACHINE_START(OMAP_OSK, "TI-OSK")
|
||||||
.map_io = omap1_map_io,
|
.map_io = omap1_map_io,
|
||||||
.init_early = omap1_init_early,
|
.init_early = omap1_init_early,
|
||||||
.init_irq = omap1_init_irq,
|
.init_irq = omap1_init_irq,
|
||||||
.handle_irq = omap1_handle_irq,
|
|
||||||
.init_machine = osk_init,
|
.init_machine = osk_init,
|
||||||
.init_late = omap1_init_late,
|
.init_late = omap1_init_late,
|
||||||
.init_time = omap1_timer_init,
|
.init_time = omap1_timer_init,
|
||||||
|
|
|
@ -259,7 +259,6 @@ MACHINE_START(OMAP_PALMTE, "OMAP310 based Palm Tungsten E")
|
||||||
.map_io = omap1_map_io,
|
.map_io = omap1_map_io,
|
||||||
.init_early = omap1_init_early,
|
.init_early = omap1_init_early,
|
||||||
.init_irq = omap1_init_irq,
|
.init_irq = omap1_init_irq,
|
||||||
.handle_irq = omap1_handle_irq,
|
|
||||||
.init_machine = omap_palmte_init,
|
.init_machine = omap_palmte_init,
|
||||||
.init_late = omap1_init_late,
|
.init_late = omap1_init_late,
|
||||||
.init_time = omap1_timer_init,
|
.init_time = omap1_timer_init,
|
||||||
|
|
|
@ -338,7 +338,6 @@ MACHINE_START(SX1, "OMAP310 based Siemens SX1")
|
||||||
.map_io = omap1_map_io,
|
.map_io = omap1_map_io,
|
||||||
.init_early = omap1_init_early,
|
.init_early = omap1_init_early,
|
||||||
.init_irq = omap1_init_irq,
|
.init_irq = omap1_init_irq,
|
||||||
.handle_irq = omap1_handle_irq,
|
|
||||||
.init_machine = omap_sx1_init,
|
.init_machine = omap_sx1_init,
|
||||||
.init_late = omap1_init_late,
|
.init_late = omap1_init_late,
|
||||||
.init_time = omap1_timer_init,
|
.init_time = omap1_timer_init,
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
*/
|
*/
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
|
#include <linux/irq.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
@ -254,4 +255,6 @@ void __init omap1_init_irq(void)
|
||||||
ct = irq_data_get_chip_type(d);
|
ct = irq_data_get_chip_type(d);
|
||||||
ct->chip.irq_unmask(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,
|
.map_io = pxa25x_map_io,
|
||||||
.nr_irqs = PXA_NR_IRQS,
|
.nr_irqs = PXA_NR_IRQS,
|
||||||
.init_irq = pxa25x_init_irq,
|
.init_irq = pxa25x_init_irq,
|
||||||
.handle_irq = pxa25x_handle_irq,
|
|
||||||
.init_time = pxa_timer_init,
|
.init_time = pxa_timer_init,
|
||||||
.init_machine = gumstix_init,
|
.init_machine = gumstix_init,
|
||||||
.restart = pxa_restart,
|
.restart = pxa_restart,
|
||||||
|
|
|
@ -143,6 +143,7 @@ static int pxa25x_set_wake(struct irq_data *d, unsigned int on)
|
||||||
void __init pxa25x_init_irq(void)
|
void __init pxa25x_init_irq(void)
|
||||||
{
|
{
|
||||||
pxa_init_irq(32, pxa25x_set_wake);
|
pxa_init_irq(32, pxa25x_set_wake);
|
||||||
|
set_handle_irq(pxa25x_handle_irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init __init
|
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)
|
void __init pxa27x_init_irq(void)
|
||||||
{
|
{
|
||||||
pxa_init_irq(34, pxa27x_set_wake);
|
pxa_init_irq(34, pxa27x_set_wake);
|
||||||
|
set_handle_irq(pxa27x_handle_irq);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init
|
static int __init
|
||||||
|
|
|
@ -1043,7 +1043,6 @@ MACHINE_START(SPITZ, "SHARP Spitz")
|
||||||
.map_io = pxa27x_map_io,
|
.map_io = pxa27x_map_io,
|
||||||
.nr_irqs = PXA_NR_IRQS,
|
.nr_irqs = PXA_NR_IRQS,
|
||||||
.init_irq = pxa27x_init_irq,
|
.init_irq = pxa27x_init_irq,
|
||||||
.handle_irq = pxa27x_handle_irq,
|
|
||||||
.init_machine = spitz_init,
|
.init_machine = spitz_init,
|
||||||
.init_time = pxa_timer_init,
|
.init_time = pxa_timer_init,
|
||||||
.restart = spitz_restart,
|
.restart = spitz_restart,
|
||||||
|
@ -1056,7 +1055,6 @@ MACHINE_START(BORZOI, "SHARP Borzoi")
|
||||||
.map_io = pxa27x_map_io,
|
.map_io = pxa27x_map_io,
|
||||||
.nr_irqs = PXA_NR_IRQS,
|
.nr_irqs = PXA_NR_IRQS,
|
||||||
.init_irq = pxa27x_init_irq,
|
.init_irq = pxa27x_init_irq,
|
||||||
.handle_irq = pxa27x_handle_irq,
|
|
||||||
.init_machine = spitz_init,
|
.init_machine = spitz_init,
|
||||||
.init_time = pxa_timer_init,
|
.init_time = pxa_timer_init,
|
||||||
.restart = spitz_restart,
|
.restart = spitz_restart,
|
||||||
|
@ -1069,7 +1067,6 @@ MACHINE_START(AKITA, "SHARP Akita")
|
||||||
.map_io = pxa27x_map_io,
|
.map_io = pxa27x_map_io,
|
||||||
.nr_irqs = PXA_NR_IRQS,
|
.nr_irqs = PXA_NR_IRQS,
|
||||||
.init_irq = pxa27x_init_irq,
|
.init_irq = pxa27x_init_irq,
|
||||||
.handle_irq = pxa27x_handle_irq,
|
|
||||||
.init_machine = spitz_init,
|
.init_machine = spitz_init,
|
||||||
.init_time = pxa_timer_init,
|
.init_time = pxa_timer_init,
|
||||||
.restart = spitz_restart,
|
.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;
|
static int dma_mmu_remap_num __initdata;
|
||||||
|
|
||||||
|
#ifdef CONFIG_DMA_CMA
|
||||||
void __init dma_contiguous_early_fixup(phys_addr_t base, unsigned long size)
|
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].base = base;
|
||||||
dma_mmu_remap[dma_mmu_remap_num].size = size;
|
dma_mmu_remap[dma_mmu_remap_num].size = size;
|
||||||
dma_mmu_remap_num++;
|
dma_mmu_remap_num++;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void __init dma_contiguous_remap(void)
|
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 do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
|
||||||
void early_abt_enable(void);
|
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 */
|
#endif /* __ARCH_ARM_FAULT_H */
|
||||||
|
|
|
@ -354,6 +354,7 @@ EXPORT_SYMBOL(flush_dcache_page);
|
||||||
* memcpy() to/from page
|
* memcpy() to/from page
|
||||||
* if written to page, flush_dcache_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)
|
void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
|
||||||
{
|
{
|
||||||
unsigned long pfn;
|
unsigned long pfn;
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/smp_plat.h>
|
#include <asm/smp_plat.h>
|
||||||
|
#include <asm/tcm.h>
|
||||||
#include <asm/tlb.h>
|
#include <asm/tlb.h>
|
||||||
#include <asm/highmem.h>
|
#include <asm/highmem.h>
|
||||||
#include <asm/system_info.h>
|
#include <asm/system_info.h>
|
||||||
|
@ -37,7 +38,6 @@
|
||||||
|
|
||||||
#include "fault.h"
|
#include "fault.h"
|
||||||
#include "mm.h"
|
#include "mm.h"
|
||||||
#include "tcm.h"
|
|
||||||
|
|
||||||
extern unsigned long __atags_pointer;
|
extern unsigned long __atags_pointer;
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
#include <asm/mpu.h>
|
#include <asm/mpu.h>
|
||||||
#include <asm/procinfo.h>
|
#include <asm/procinfo.h>
|
||||||
|
#include <asm/idmap.h>
|
||||||
|
|
||||||
#include "mm.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
|
* Different from other insn uses imm8, the real addressing offset of
|
||||||
* STRD in T32 encoding should be imm8 * 4. See ARMARM description.
|
* 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,
|
struct arch_probes_insn *asi,
|
||||||
const struct decode_header *h)
|
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
|
* kprobe, and that level is reserved for user kprobe handlers, so we can't
|
||||||
* risk encountering a new kprobe in an interrupt handler.
|
* 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 *p, *cur;
|
||||||
struct kprobe_ctlblk *kcb;
|
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
|
static void
|
||||||
optimized_callback(struct optimized_kprobe *op, struct pt_regs *regs)
|
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,
|
[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;
|
unsigned regs = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
|
@ -454,3 +454,7 @@ void kprobe_thumb32_test_cases(void);
|
||||||
#else
|
#else
|
||||||
void kprobe_arm_test_cases(void);
|
void kprobe_arm_test_cases(void);
|
||||||
#endif
|
#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/time.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <asm/vdso.h>
|
||||||
|
#include <asm/unwind.h>
|
||||||
|
|
||||||
int __vdso_clock_gettime(clockid_t clock,
|
int __vdso_clock_gettime(clockid_t clock,
|
||||||
struct old_timespec32 *ts)
|
struct old_timespec32 *ts)
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include <asm/thread_notify.h>
|
#include <asm/thread_notify.h>
|
||||||
#include <asm/traps.h>
|
#include <asm/traps.h>
|
||||||
#include <asm/vfp.h>
|
#include <asm/vfp.h>
|
||||||
|
#include <asm/neon.h>
|
||||||
|
|
||||||
#include "vfpinstr.h"
|
#include "vfpinstr.h"
|
||||||
#include "vfp.h"
|
#include "vfp.h"
|
||||||
|
|
|
@ -201,6 +201,7 @@ static int __init icoll_of_init(struct device_node *np,
|
||||||
stmp_reset_block(icoll_priv.ctrl);
|
stmp_reset_block(icoll_priv.ctrl);
|
||||||
|
|
||||||
icoll_add_domain(np, ICOLL_NUM_IRQS);
|
icoll_add_domain(np, ICOLL_NUM_IRQS);
|
||||||
|
set_handle_irq(icoll_handle_irq);
|
||||||
|
|
||||||
return 0;
|
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 a new issue