Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32
Pull AVR32 updates from Hans-Christian Egtvedt. * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32: avr32: uapi: be sure of "_UAPI" prefix for all guard macros avr32: add kprobe_ctlblk memory struct avr32: fix out-of-range jump in large kernels avr32: setup crt for early panic()
This commit is contained in:
Коммит
8a60ba0a05
|
@ -8,6 +8,8 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <asm/setup.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/sysreg.h>
|
||||
|
||||
/*
|
||||
* The kernel is loaded where we want it to be and all caches
|
||||
|
@ -20,11 +22,6 @@
|
|||
.section .init.text,"ax"
|
||||
.global _start
|
||||
_start:
|
||||
/* Check if the boot loader actually provided a tag table */
|
||||
lddpc r0, magic_number
|
||||
cp.w r12, r0
|
||||
brne no_tag_table
|
||||
|
||||
/* Initialize .bss */
|
||||
lddpc r2, bss_start_addr
|
||||
lddpc r3, end_addr
|
||||
|
@ -34,6 +31,25 @@ _start:
|
|||
cp r2, r3
|
||||
brlo 1b
|
||||
|
||||
/* Initialize status register */
|
||||
lddpc r0, init_sr
|
||||
mtsr SYSREG_SR, r0
|
||||
|
||||
/* Set initial stack pointer */
|
||||
lddpc sp, stack_addr
|
||||
sub sp, -THREAD_SIZE
|
||||
|
||||
#ifdef CONFIG_FRAME_POINTER
|
||||
/* Mark last stack frame */
|
||||
mov lr, 0
|
||||
mov r7, 0
|
||||
#endif
|
||||
|
||||
/* Check if the boot loader actually provided a tag table */
|
||||
lddpc r0, magic_number
|
||||
cp.w r12, r0
|
||||
brne no_tag_table
|
||||
|
||||
/*
|
||||
* Save the tag table address for later use. This must be done
|
||||
* _after_ .bss has been initialized...
|
||||
|
@ -53,8 +69,15 @@ bss_start_addr:
|
|||
.long __bss_start
|
||||
end_addr:
|
||||
.long _end
|
||||
init_sr:
|
||||
.long 0x007f0000 /* Supervisor mode, everything masked */
|
||||
stack_addr:
|
||||
.long init_thread_union
|
||||
panic_addr:
|
||||
.long panic
|
||||
|
||||
no_tag_table:
|
||||
sub r12, pc, (. - 2f)
|
||||
bral panic
|
||||
/* branch to panic() which can be far away with that construct */
|
||||
lddpc pc, panic_addr
|
||||
2: .asciz "Boot loader didn't provide correct magic number\n"
|
||||
|
|
|
@ -16,6 +16,7 @@
|
|||
typedef u16 kprobe_opcode_t;
|
||||
#define BREAKPOINT_INSTRUCTION 0xd673 /* breakpoint */
|
||||
#define MAX_INSN_SIZE 2
|
||||
#define MAX_STACK_SIZE 64 /* 32 would probably be OK */
|
||||
|
||||
#define kretprobe_blacklist_size 0
|
||||
|
||||
|
@ -26,6 +27,19 @@ struct arch_specific_insn {
|
|||
kprobe_opcode_t insn[MAX_INSN_SIZE];
|
||||
};
|
||||
|
||||
struct prev_kprobe {
|
||||
struct kprobe *kp;
|
||||
unsigned int status;
|
||||
};
|
||||
|
||||
/* per-cpu kprobe control block */
|
||||
struct kprobe_ctlblk {
|
||||
unsigned int kprobe_status;
|
||||
struct prev_kprobe prev_kprobe;
|
||||
struct pt_regs jprobe_saved_regs;
|
||||
char jprobes_stack[MAX_STACK_SIZE];
|
||||
};
|
||||
|
||||
extern int kprobe_fault_handler(struct pt_regs *regs, int trapnr);
|
||||
extern int kprobe_exceptions_notify(struct notifier_block *self,
|
||||
unsigned long val, void *data);
|
||||
|
|
|
@ -2,35 +2,35 @@
|
|||
include include/uapi/asm-generic/Kbuild.asm
|
||||
|
||||
header-y += auxvec.h
|
||||
header-y += bitsperlong.h
|
||||
header-y += byteorder.h
|
||||
header-y += cachectl.h
|
||||
header-y += errno.h
|
||||
header-y += fcntl.h
|
||||
header-y += ioctl.h
|
||||
header-y += ioctls.h
|
||||
header-y += ipcbuf.h
|
||||
header-y += kvm_para.h
|
||||
header-y += mman.h
|
||||
header-y += msgbuf.h
|
||||
header-y += param.h
|
||||
header-y += poll.h
|
||||
header-y += posix_types.h
|
||||
header-y += ptrace.h
|
||||
header-y += resource.h
|
||||
header-y += sembuf.h
|
||||
header-y += setup.h
|
||||
header-y += shmbuf.h
|
||||
header-y += sigcontext.h
|
||||
header-y += siginfo.h
|
||||
header-y += signal.h
|
||||
header-y += socket.h
|
||||
header-y += sockios.h
|
||||
header-y += stat.h
|
||||
header-y += statfs.h
|
||||
header-y += swab.h
|
||||
header-y += termbits.h
|
||||
header-y += termios.h
|
||||
header-y += types.h
|
||||
header-y += unistd.h
|
||||
generic-y += bitsperlong.h
|
||||
generic-y += errno.h
|
||||
generic-y += fcntl.h
|
||||
generic-y += ioctl.h
|
||||
generic-y += ioctls.h
|
||||
generic-y += ipcbuf.h
|
||||
generic-y += kvm_para.h
|
||||
generic-y += mman.h
|
||||
generic-y += param.h
|
||||
generic-y += poll.h
|
||||
generic-y += resource.h
|
||||
generic-y += siginfo.h
|
||||
generic-y += statfs.h
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __ASM_AVR32_AUXVEC_H
|
||||
#define __ASM_AVR32_AUXVEC_H
|
||||
#ifndef _UAPI__ASM_AVR32_AUXVEC_H
|
||||
#define _UAPI__ASM_AVR32_AUXVEC_H
|
||||
|
||||
#endif /* __ASM_AVR32_AUXVEC_H */
|
||||
#endif /* _UAPI__ASM_AVR32_AUXVEC_H */
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/bitsperlong.h>
|
|
@ -1,9 +1,9 @@
|
|||
/*
|
||||
* AVR32 endian-conversion functions.
|
||||
*/
|
||||
#ifndef __ASM_AVR32_BYTEORDER_H
|
||||
#define __ASM_AVR32_BYTEORDER_H
|
||||
#ifndef _UAPI__ASM_AVR32_BYTEORDER_H
|
||||
#define _UAPI__ASM_AVR32_BYTEORDER_H
|
||||
|
||||
#include <linux/byteorder/big_endian.h>
|
||||
|
||||
#endif /* __ASM_AVR32_BYTEORDER_H */
|
||||
#endif /* _UAPI__ASM_AVR32_BYTEORDER_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_CACHECTL_H
|
||||
#define __ASM_AVR32_CACHECTL_H
|
||||
#ifndef _UAPI__ASM_AVR32_CACHECTL_H
|
||||
#define _UAPI__ASM_AVR32_CACHECTL_H
|
||||
|
||||
/*
|
||||
* Operations that can be performed through the cacheflush system call
|
||||
|
@ -8,4 +8,4 @@
|
|||
/* Clean the data cache, then invalidate the icache */
|
||||
#define CACHE_IFLUSH 0
|
||||
|
||||
#endif /* __ASM_AVR32_CACHECTL_H */
|
||||
#endif /* _UAPI__ASM_AVR32_CACHECTL_H */
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef __ASM_AVR32_ERRNO_H
|
||||
#define __ASM_AVR32_ERRNO_H
|
||||
|
||||
#include <asm-generic/errno.h>
|
||||
|
||||
#endif /* __ASM_AVR32_ERRNO_H */
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef __ASM_AVR32_FCNTL_H
|
||||
#define __ASM_AVR32_FCNTL_H
|
||||
|
||||
#include <asm-generic/fcntl.h>
|
||||
|
||||
#endif /* __ASM_AVR32_FCNTL_H */
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef __ASM_AVR32_IOCTL_H
|
||||
#define __ASM_AVR32_IOCTL_H
|
||||
|
||||
#include <asm-generic/ioctl.h>
|
||||
|
||||
#endif /* __ASM_AVR32_IOCTL_H */
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef __ASM_AVR32_IOCTLS_H
|
||||
#define __ASM_AVR32_IOCTLS_H
|
||||
|
||||
#include <asm-generic/ioctls.h>
|
||||
|
||||
#endif /* __ASM_AVR32_IOCTLS_H */
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/ipcbuf.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/kvm_para.h>
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/mman.h>
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_MSGBUF_H
|
||||
#define __ASM_AVR32_MSGBUF_H
|
||||
#ifndef _UAPI__ASM_AVR32_MSGBUF_H
|
||||
#define _UAPI__ASM_AVR32_MSGBUF_H
|
||||
|
||||
/*
|
||||
* The msqid64_ds structure for i386 architecture.
|
||||
|
@ -28,4 +28,4 @@ struct msqid64_ds {
|
|||
unsigned long __unused5;
|
||||
};
|
||||
|
||||
#endif /* __ASM_AVR32_MSGBUF_H */
|
||||
#endif /* _UAPI__ASM_AVR32_MSGBUF_H */
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
#include <asm-generic/poll.h>
|
|
@ -5,8 +5,8 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef __ASM_AVR32_POSIX_TYPES_H
|
||||
#define __ASM_AVR32_POSIX_TYPES_H
|
||||
#ifndef _UAPI__ASM_AVR32_POSIX_TYPES_H
|
||||
#define _UAPI__ASM_AVR32_POSIX_TYPES_H
|
||||
|
||||
/*
|
||||
* This file is generally used by user-level software, so you need to
|
||||
|
@ -34,4 +34,4 @@ typedef unsigned short __kernel_old_dev_t;
|
|||
|
||||
#include <asm-generic/posix_types.h>
|
||||
|
||||
#endif /* __ASM_AVR32_POSIX_TYPES_H */
|
||||
#endif /* _UAPI__ASM_AVR32_POSIX_TYPES_H */
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef __ASM_AVR32_RESOURCE_H
|
||||
#define __ASM_AVR32_RESOURCE_H
|
||||
|
||||
#include <asm-generic/resource.h>
|
||||
|
||||
#endif /* __ASM_AVR32_RESOURCE_H */
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_SEMBUF_H
|
||||
#define __ASM_AVR32_SEMBUF_H
|
||||
#ifndef _UAPI__ASM_AVR32_SEMBUF_H
|
||||
#define _UAPI__ASM_AVR32_SEMBUF_H
|
||||
|
||||
/*
|
||||
* The semid64_ds structure for AVR32 architecture.
|
||||
|
@ -22,4 +22,4 @@ struct semid64_ds {
|
|||
unsigned long __unused4;
|
||||
};
|
||||
|
||||
#endif /* __ASM_AVR32_SEMBUF_H */
|
||||
#endif /* _UAPI__ASM_AVR32_SEMBUF_H */
|
||||
|
|
|
@ -13,5 +13,4 @@
|
|||
|
||||
#define COMMAND_LINE_SIZE 256
|
||||
|
||||
|
||||
#endif /* _UAPI__ASM_AVR32_SETUP_H__ */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_SHMBUF_H
|
||||
#define __ASM_AVR32_SHMBUF_H
|
||||
#ifndef _UAPI__ASM_AVR32_SHMBUF_H
|
||||
#define _UAPI__ASM_AVR32_SHMBUF_H
|
||||
|
||||
/*
|
||||
* The shmid64_ds structure for i386 architecture.
|
||||
|
@ -39,4 +39,4 @@ struct shminfo64 {
|
|||
unsigned long __unused4;
|
||||
};
|
||||
|
||||
#endif /* __ASM_AVR32_SHMBUF_H */
|
||||
#endif /* _UAPI__ASM_AVR32_SHMBUF_H */
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef __ASM_AVR32_SIGCONTEXT_H
|
||||
#define __ASM_AVR32_SIGCONTEXT_H
|
||||
#ifndef _UAPI__ASM_AVR32_SIGCONTEXT_H
|
||||
#define _UAPI__ASM_AVR32_SIGCONTEXT_H
|
||||
|
||||
struct sigcontext {
|
||||
unsigned long oldmask;
|
||||
|
@ -31,4 +31,4 @@ struct sigcontext {
|
|||
unsigned long r0;
|
||||
};
|
||||
|
||||
#endif /* __ASM_AVR32_SIGCONTEXT_H */
|
||||
#endif /* _UAPI__ASM_AVR32_SIGCONTEXT_H */
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef _AVR32_SIGINFO_H
|
||||
#define _AVR32_SIGINFO_H
|
||||
|
||||
#include <asm-generic/siginfo.h>
|
||||
|
||||
#endif
|
|
@ -118,5 +118,4 @@ typedef struct sigaltstack {
|
|||
size_t ss_size;
|
||||
} stack_t;
|
||||
|
||||
|
||||
#endif /* _UAPI__ASM_AVR32_SIGNAL_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_SOCKET_H
|
||||
#define __ASM_AVR32_SOCKET_H
|
||||
#ifndef _UAPI__ASM_AVR32_SOCKET_H
|
||||
#define _UAPI__ASM_AVR32_SOCKET_H
|
||||
|
||||
#include <asm/sockios.h>
|
||||
|
||||
|
@ -78,4 +78,4 @@
|
|||
|
||||
#define SO_MAX_PACING_RATE 47
|
||||
|
||||
#endif /* __ASM_AVR32_SOCKET_H */
|
||||
#endif /* _UAPI__ASM_AVR32_SOCKET_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_SOCKIOS_H
|
||||
#define __ASM_AVR32_SOCKIOS_H
|
||||
#ifndef _UAPI__ASM_AVR32_SOCKIOS_H
|
||||
#define _UAPI__ASM_AVR32_SOCKIOS_H
|
||||
|
||||
/* Socket-level I/O control calls. */
|
||||
#define FIOSETOWN 0x8901
|
||||
|
@ -10,4 +10,4 @@
|
|||
#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
|
||||
#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
|
||||
|
||||
#endif /* __ASM_AVR32_SOCKIOS_H */
|
||||
#endif /* _UAPI__ASM_AVR32_SOCKIOS_H */
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef __ASM_AVR32_STAT_H
|
||||
#define __ASM_AVR32_STAT_H
|
||||
#ifndef _UAPI__ASM_AVR32_STAT_H
|
||||
#define _UAPI__ASM_AVR32_STAT_H
|
||||
|
||||
struct __old_kernel_stat {
|
||||
unsigned short st_dev;
|
||||
|
@ -76,4 +76,4 @@ struct stat64 {
|
|||
unsigned long __unused2;
|
||||
};
|
||||
|
||||
#endif /* __ASM_AVR32_STAT_H */
|
||||
#endif /* _UAPI__ASM_AVR32_STAT_H */
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef __ASM_AVR32_STATFS_H
|
||||
#define __ASM_AVR32_STATFS_H
|
||||
|
||||
#include <asm-generic/statfs.h>
|
||||
|
||||
#endif /* __ASM_AVR32_STATFS_H */
|
|
@ -1,8 +1,8 @@
|
|||
/*
|
||||
* AVR32 byteswapping functions.
|
||||
*/
|
||||
#ifndef __ASM_AVR32_SWAB_H
|
||||
#define __ASM_AVR32_SWAB_H
|
||||
#ifndef _UAPI__ASM_AVR32_SWAB_H
|
||||
#define _UAPI__ASM_AVR32_SWAB_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/compiler.h>
|
||||
|
@ -32,4 +32,4 @@ static inline __attribute_const__ __u32 __arch_swab32(__u32 val)
|
|||
#define __arch_swab32 __arch_swab32
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_AVR32_SWAB_H */
|
||||
#endif /* _UAPI__ASM_AVR32_SWAB_H */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef __ASM_AVR32_TERMBITS_H
|
||||
#define __ASM_AVR32_TERMBITS_H
|
||||
#ifndef _UAPI__ASM_AVR32_TERMBITS_H
|
||||
#define _UAPI__ASM_AVR32_TERMBITS_H
|
||||
|
||||
#include <linux/posix_types.h>
|
||||
|
||||
|
@ -193,4 +193,4 @@ struct ktermios {
|
|||
#define TCSADRAIN 1
|
||||
#define TCSAFLUSH 2
|
||||
|
||||
#endif /* __ASM_AVR32_TERMBITS_H */
|
||||
#endif /* _UAPI__ASM_AVR32_TERMBITS_H */
|
||||
|
|
|
@ -46,5 +46,4 @@ struct termio {
|
|||
|
||||
/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */
|
||||
|
||||
|
||||
#endif /* _UAPI__ASM_AVR32_TERMIOS_H */
|
||||
|
|
|
@ -5,4 +5,9 @@
|
|||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#ifndef _UAPI__ASM_AVR32_TYPES_H
|
||||
#define _UAPI__ASM_AVR32_TYPES_H
|
||||
|
||||
#include <asm-generic/int-ll64.h>
|
||||
|
||||
#endif /* _UAPI__ASM_AVR32_TYPES_H */
|
||||
|
|
|
@ -301,5 +301,4 @@
|
|||
#define __NR_eventfd 281
|
||||
#define __NR_setns 283
|
||||
|
||||
|
||||
#endif /* _UAPI__ASM_AVR32_UNISTD_H */
|
||||
|
|
|
@ -401,9 +401,10 @@ handle_critical:
|
|||
/* We should never get here... */
|
||||
bad_return:
|
||||
sub r12, pc, (. - 1f)
|
||||
bral panic
|
||||
lddpc pc, 2f
|
||||
.align 2
|
||||
1: .asciz "Return from critical exception!"
|
||||
2: .long panic
|
||||
|
||||
.align 1
|
||||
do_bus_error_write:
|
||||
|
|
|
@ -10,33 +10,13 @@
|
|||
#include <linux/linkage.h>
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/thread_info.h>
|
||||
#include <asm/sysreg.h>
|
||||
|
||||
.section .init.text,"ax"
|
||||
.global kernel_entry
|
||||
kernel_entry:
|
||||
/* Initialize status register */
|
||||
lddpc r0, init_sr
|
||||
mtsr SYSREG_SR, r0
|
||||
|
||||
/* Set initial stack pointer */
|
||||
lddpc sp, stack_addr
|
||||
sub sp, -THREAD_SIZE
|
||||
|
||||
#ifdef CONFIG_FRAME_POINTER
|
||||
/* Mark last stack frame */
|
||||
mov lr, 0
|
||||
mov r7, 0
|
||||
#endif
|
||||
|
||||
/* Start the show */
|
||||
lddpc pc, kernel_start_addr
|
||||
|
||||
.align 2
|
||||
init_sr:
|
||||
.long 0x007f0000 /* Supervisor mode, everything masked */
|
||||
stack_addr:
|
||||
.long init_thread_union
|
||||
kernel_start_addr:
|
||||
.long start_kernel
|
||||
|
|
Загрузка…
Ссылка в новой задаче