Skip to content

Commit 23ebea7

Browse files
committed
ARC: Make pt_regs regs unsigned
KGDB fails to build after f51e2f1 ("ARC: make sure instruction_pointer() returns unsigned value") The hack to force one specific reg to unsigned backfired. There's no reason to keep the regs signed after all. | CC arch/arc/kernel/kgdb.o |../arch/arc/kernel/kgdb.c: In function 'kgdb_trap': | ../arch/arc/kernel/kgdb.c:180:29: error: lvalue required as left operand of assignment | instruction_pointer(regs) -= BREAK_INSTR_SIZE; Reported-by: Yuriy Kolerov <yuriy.kolerov@synopsys.com> Fixes: f51e2f1 ("ARC: make sure instruction_pointer() returns unsigned value") Cc: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
1 parent 7e4f38f commit 23ebea7

File tree

2 files changed

+37
-37
lines changed

2 files changed

+37
-37
lines changed

arch/arc/include/asm/ptrace.h

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,20 @@
2020
struct pt_regs {
2121

2222
/* Real registers */
23-
long bta; /* bta_l1, bta_l2, erbta */
23+
unsigned long bta; /* bta_l1, bta_l2, erbta */
2424

25-
long lp_start, lp_end, lp_count;
25+
unsigned long lp_start, lp_end, lp_count;
2626

27-
long status32; /* status32_l1, status32_l2, erstatus */
28-
long ret; /* ilink1, ilink2 or eret */
29-
long blink;
30-
long fp;
31-
long r26; /* gp */
27+
unsigned long status32; /* status32_l1, status32_l2, erstatus */
28+
unsigned long ret; /* ilink1, ilink2 or eret */
29+
unsigned long blink;
30+
unsigned long fp;
31+
unsigned long r26; /* gp */
3232

33-
long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
33+
unsigned long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
3434

35-
long sp; /* user/kernel sp depending on where we came from */
36-
long orig_r0;
35+
unsigned long sp; /* User/Kernel depending on where we came from */
36+
unsigned long orig_r0;
3737

3838
/*
3939
* To distinguish bet excp, syscall, irq
@@ -55,13 +55,13 @@ struct pt_regs {
5555
unsigned long event;
5656
};
5757

58-
long user_r25;
58+
unsigned long user_r25;
5959
};
6060
#else
6161

6262
struct pt_regs {
6363

64-
long orig_r0;
64+
unsigned long orig_r0;
6565

6666
union {
6767
struct {
@@ -76,37 +76,37 @@ struct pt_regs {
7676
unsigned long event;
7777
};
7878

79-
long bta; /* bta_l1, bta_l2, erbta */
79+
unsigned long bta; /* bta_l1, bta_l2, erbta */
8080

81-
long user_r25;
81+
unsigned long user_r25;
8282

83-
long r26; /* gp */
84-
long fp;
85-
long sp; /* user/kernel sp depending on where we came from */
83+
unsigned long r26; /* gp */
84+
unsigned long fp;
85+
unsigned long sp; /* user/kernel sp depending on where we came from */
8686

87-
long r12;
87+
unsigned long r12;
8888

8989
/*------- Below list auto saved by h/w -----------*/
90-
long r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11;
90+
unsigned long r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11;
9191

92-
long blink;
93-
long lp_end, lp_start, lp_count;
92+
unsigned long blink;
93+
unsigned long lp_end, lp_start, lp_count;
9494

95-
long ei, ldi, jli;
95+
unsigned long ei, ldi, jli;
9696

97-
long ret;
98-
long status32;
97+
unsigned long ret;
98+
unsigned long status32;
9999
};
100100

101101
#endif
102102

103103
/* Callee saved registers - need to be saved only when you are scheduled out */
104104

105105
struct callee_regs {
106-
long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13;
106+
unsigned long r25, r24, r23, r22, r21, r20, r19, r18, r17, r16, r15, r14, r13;
107107
};
108108

109-
#define instruction_pointer(regs) (unsigned long)((regs)->ret)
109+
#define instruction_pointer(regs) ((regs)->ret)
110110
#define profile_pc(regs) instruction_pointer(regs)
111111

112112
/* return 1 if user mode or 0 if kernel mode */
@@ -142,7 +142,7 @@ struct callee_regs {
142142

143143
static inline long regs_return_value(struct pt_regs *regs)
144144
{
145-
return regs->r0;
145+
return (long)regs->r0;
146146
}
147147

148148
#endif /* !__ASSEMBLY__ */

arch/arc/include/uapi/asm/ptrace.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,20 @@
3232
*/
3333
struct user_regs_struct {
3434

35-
long pad;
35+
unsigned long pad;
3636
struct {
37-
long bta, lp_start, lp_end, lp_count;
38-
long status32, ret, blink, fp, gp;
39-
long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
40-
long sp;
37+
unsigned long bta, lp_start, lp_end, lp_count;
38+
unsigned long status32, ret, blink, fp, gp;
39+
unsigned long r12, r11, r10, r9, r8, r7, r6, r5, r4, r3, r2, r1, r0;
40+
unsigned long sp;
4141
} scratch;
42-
long pad2;
42+
unsigned long pad2;
4343
struct {
44-
long r25, r24, r23, r22, r21, r20;
45-
long r19, r18, r17, r16, r15, r14, r13;
44+
unsigned long r25, r24, r23, r22, r21, r20;
45+
unsigned long r19, r18, r17, r16, r15, r14, r13;
4646
} callee;
47-
long efa; /* break pt addr, for break points in delay slots */
48-
long stop_pc; /* give dbg stop_pc after ensuring brkpt trap */
47+
unsigned long efa; /* break pt addr, for break points in delay slots */
48+
unsigned long stop_pc; /* give dbg stop_pc after ensuring brkpt trap */
4949
};
5050
#endif /* !__ASSEMBLY__ */
5151

0 commit comments

Comments
 (0)