hc
2024-05-10 37f49e37ab4cb5d0bc4c60eb5c6d4dd57db767bb
kernel/arch/sh/include/asm/syscall_32.h
....@@ -40,62 +40,36 @@
4040 struct pt_regs *regs,
4141 int error, long val)
4242 {
43
- if (error)
44
- regs->regs[0] = -error;
45
- else
46
- regs->regs[0] = val;
43
+ regs->regs[0] = (long) error ?: val;
4744 }
4845
4946 static inline void syscall_get_arguments(struct task_struct *task,
5047 struct pt_regs *regs,
51
- unsigned int i, unsigned int n,
5248 unsigned long *args)
5349 {
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);
6150
6251 /* Argument pattern is: R4, R5, R6, R7, R0, R1 */
63
- switch (n) {
64
- case 6: args[5] = regs->regs[1];
65
- case 5: args[4] = regs->regs[0];
66
- case 4: args[3] = regs->regs[7];
67
- case 3: args[2] = regs->regs[6];
68
- case 2: args[1] = regs->regs[5];
69
- case 1: args[0] = regs->regs[4];
70
- case 0:
71
- break;
72
- default:
73
- BUG();
74
- }
52
+ args[5] = regs->regs[1];
53
+ args[4] = regs->regs[0];
54
+ args[3] = regs->regs[7];
55
+ args[2] = regs->regs[6];
56
+ args[1] = regs->regs[5];
57
+ args[0] = regs->regs[4];
7558 }
7659
7760 static inline void syscall_set_arguments(struct task_struct *task,
7861 struct pt_regs *regs,
79
- unsigned int i, unsigned int n,
8062 const unsigned long *args)
8163 {
82
- /* Same note as above applies */
83
- BUG_ON(i);
84
-
85
- switch (n) {
86
- case 6: regs->regs[1] = args[5];
87
- case 5: regs->regs[0] = args[4];
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
- }
64
+ regs->regs[1] = args[5];
65
+ regs->regs[0] = args[4];
66
+ regs->regs[7] = args[3];
67
+ regs->regs[6] = args[2];
68
+ regs->regs[5] = args[1];
69
+ regs->regs[4] = args[0];
9670 }
9771
98
-static inline int syscall_get_arch(void)
72
+static inline int syscall_get_arch(struct task_struct *task)
9973 {
10074 int arch = AUDIT_ARCH_SH;
10175