diff options
author | Jens Axboe <axboe@kernel.dk> | 2019-04-22 11:47:36 -0400 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2019-04-22 11:47:36 -0400 |
commit | 5c61ee2cd5860e41c8ab98837761ffaa93eb4dfe (patch) | |
tree | 0c78e25f5020eeee47863092ccbb2a3f56bea8a9 /arch/sh | |
parent | cdf3e3deb747d5e193dee617ed37c83060eb576f (diff) | |
parent | 085b7755808aa11f78ab9377257e1dad2e6fa4bb (diff) |
Merge tag 'v5.1-rc6' into for-5.2/block
Pull in v5.1-rc6 to resolve two conflicts. One is in BFQ, in just a
comment, and is trivial. The other one is a conflict due to a later fix
in the bio multi-page work, and needs a bit more care.
* tag 'v5.1-rc6': (770 commits)
Linux 5.1-rc6
block: make sure that bvec length can't be overflow
block: kill all_q_node in request_queue
x86/cpu/intel: Lower the "ENERGY_PERF_BIAS: Set to normal" message's log priority
coredump: fix race condition between mmget_not_zero()/get_task_mm() and core dumping
mm/kmemleak.c: fix unused-function warning
init: initialize jump labels before command line option parsing
kernel/watchdog_hld.c: hard lockup message should end with a newline
kcov: improve CONFIG_ARCH_HAS_KCOV help text
mm: fix inactive list balancing between NUMA nodes and cgroups
mm/hotplug: treat CMA pages as unmovable
proc: fixup proc-pid-vm test
proc: fix map_files test on F29
mm/vmstat.c: fix /proc/vmstat format for CONFIG_DEBUG_TLBFLUSH=y CONFIG_SMP=n
mm/memory_hotplug: do not unlock after failing to take the device_hotplug_lock
mm: swapoff: shmem_unuse() stop eviction without igrab()
mm: swapoff: take notice of completion sooner
mm: swapoff: remove too limiting SWAP_UNUSE_MAX_TRIES
mm: swapoff: shmem_find_swap_entries() filter out other types
slab: store tagged freelist for off-slab slabmgmt
...
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'arch/sh')
-rw-r--r-- | arch/sh/boards/of-generic.c | 4 | ||||
-rw-r--r-- | arch/sh/include/asm/syscall_32.h | 47 | ||||
-rw-r--r-- | arch/sh/include/asm/syscall_64.h | 8 |
3 files changed, 16 insertions, 43 deletions
diff --git a/arch/sh/boards/of-generic.c b/arch/sh/boards/of-generic.c index 958f46da3a79..d91065e81a4e 100644 --- a/arch/sh/boards/of-generic.c +++ b/arch/sh/boards/of-generic.c | |||
@@ -164,10 +164,10 @@ static struct sh_machine_vector __initmv sh_of_generic_mv = { | |||
164 | 164 | ||
165 | struct sh_clk_ops; | 165 | struct sh_clk_ops; |
166 | 166 | ||
167 | void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) | 167 | void __init __weak arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
168 | { | 168 | { |
169 | } | 169 | } |
170 | 170 | ||
171 | void __init plat_irq_setup(void) | 171 | void __init __weak plat_irq_setup(void) |
172 | { | 172 | { |
173 | } | 173 | } |
diff --git a/arch/sh/include/asm/syscall_32.h b/arch/sh/include/asm/syscall_32.h index 6e118799831c..8c9d7e5e5dcc 100644 --- a/arch/sh/include/asm/syscall_32.h +++ b/arch/sh/include/asm/syscall_32.h | |||
@@ -48,51 +48,28 @@ static inline void syscall_set_return_value(struct task_struct *task, | |||
48 | 48 | ||
49 | static inline void syscall_get_arguments(struct task_struct *task, | 49 | static inline void syscall_get_arguments(struct task_struct *task, |
50 | struct pt_regs *regs, | 50 | struct pt_regs *regs, |
51 | unsigned int i, unsigned int n, | ||
52 | unsigned long *args) | 51 | unsigned long *args) |
53 | { | 52 | { |
54 | /* | ||
55 | * Do this simply for now. If we need to start supporting | ||
56 | * fetching arguments from arbitrary indices, this will need some | ||
57 | * extra logic. Presently there are no in-tree users that depend | ||
58 | * on this behaviour. | ||
59 | */ | ||
60 | BUG_ON(i); | ||
61 | 53 | ||
62 | /* Argument pattern is: R4, R5, R6, R7, R0, R1 */ | 54 | /* Argument pattern is: R4, R5, R6, R7, R0, R1 */ |
63 | switch (n) { | 55 | args[5] = regs->regs[1]; |
64 | case 6: args[5] = regs->regs[1]; | 56 | args[4] = regs->regs[0]; |
65 | case 5: args[4] = regs->regs[0]; | 57 | args[3] = regs->regs[7]; |
66 | case 4: args[3] = regs->regs[7]; | 58 | args[2] = regs->regs[6]; |
67 | case 3: args[2] = regs->regs[6]; | 59 | args[1] = regs->regs[5]; |
68 | case 2: args[1] = regs->regs[5]; | 60 | args[0] = regs->regs[4]; |
69 | case 1: args[0] = regs->regs[4]; | ||
70 | case 0: | ||
71 | break; | ||
72 | default: | ||
73 | BUG(); | ||
74 | } | ||
75 | } | 61 | } |
76 | 62 | ||
77 | static inline void syscall_set_arguments(struct task_struct *task, | 63 | static inline void syscall_set_arguments(struct task_struct *task, |
78 | struct pt_regs *regs, | 64 | struct pt_regs *regs, |
79 | unsigned int i, unsigned int n, | ||
80 | const unsigned long *args) | 65 | const unsigned long *args) |
81 | { | 66 | { |
82 | /* Same note as above applies */ | 67 | regs->regs[1] = args[5]; |
83 | BUG_ON(i); | 68 | regs->regs[0] = args[4]; |
84 | 69 | regs->regs[7] = args[3]; | |
85 | switch (n) { | 70 | regs->regs[6] = args[2]; |
86 | case 6: regs->regs[1] = args[5]; | 71 | regs->regs[5] = args[1]; |
87 | case 5: regs->regs[0] = args[4]; | 72 | regs->regs[4] = args[0]; |
88 | case 4: regs->regs[7] = args[3]; | ||
89 | case 3: regs->regs[6] = args[2]; | ||
90 | case 2: regs->regs[5] = args[1]; | ||
91 | case 1: regs->regs[4] = args[0]; | ||
92 | break; | ||
93 | default: | ||
94 | BUG(); | ||
95 | } | ||
96 | } | 73 | } |
97 | 74 | ||
98 | static inline int syscall_get_arch(void) | 75 | static inline int syscall_get_arch(void) |
diff --git a/arch/sh/include/asm/syscall_64.h b/arch/sh/include/asm/syscall_64.h index 43882580c7f9..22fad97da066 100644 --- a/arch/sh/include/asm/syscall_64.h +++ b/arch/sh/include/asm/syscall_64.h | |||
@@ -47,20 +47,16 @@ static inline void syscall_set_return_value(struct task_struct *task, | |||
47 | 47 | ||
48 | static inline void syscall_get_arguments(struct task_struct *task, | 48 | static inline void syscall_get_arguments(struct task_struct *task, |
49 | struct pt_regs *regs, | 49 | struct pt_regs *regs, |
50 | unsigned int i, unsigned int n, | ||
51 | unsigned long *args) | 50 | unsigned long *args) |
52 | { | 51 | { |
53 | BUG_ON(i + n > 6); | 52 | memcpy(args, ®s->regs[2], 6 * sizeof(args[0])); |
54 | memcpy(args, ®s->regs[2 + i], n * sizeof(args[0])); | ||
55 | } | 53 | } |
56 | 54 | ||
57 | static inline void syscall_set_arguments(struct task_struct *task, | 55 | static inline void syscall_set_arguments(struct task_struct *task, |
58 | struct pt_regs *regs, | 56 | struct pt_regs *regs, |
59 | unsigned int i, unsigned int n, | ||
60 | const unsigned long *args) | 57 | const unsigned long *args) |
61 | { | 58 | { |
62 | BUG_ON(i + n > 6); | 59 | memcpy(®s->regs[2], args, 6 * sizeof(args[0])); |
63 | memcpy(®s->regs[2 + i], args, n * sizeof(args[0])); | ||
64 | } | 60 | } |
65 | 61 | ||
66 | static inline int syscall_get_arch(void) | 62 | static inline int syscall_get_arch(void) |