History

signal/blackfin: Move the blackfin specific si_codes to asm-generic/siginfo.h

Having si_codes in many different files simply encourages duplicate definitions that can cause problems later. To avoid that merge the blackfin specific si_codes into uapi/asm-generic/siginfo.h Update copy_siginfo_to_user to copy with the absence of BUS_MCEERR_AR that blackfin defines to be something else.

Eric W. Biederman committed 8 years ago

Commit 71ee78d1 parent 753e5a83 files · +33 −37Browse files

Unified · Split

3 files
  1. arch/blackfin/include/uapi/asm/siginfo.h +0 −32
  2. include/uapi/asm-generic/siginfo.h +27 −2
  3. kernel/signal.c +6 −3
arch/blackfin/include/uapi/asm/siginfo.h+0−32
@@ -15,36 +15,4 @@ · 14 unmodified lines
1515
1616 #define si_uid16 _sifields._kill._uid
1717
18−#define ILL_ILLPARAOP 2 /* illegal opcode combine ********** */
19−#define ILL_ILLEXCPT 4 /* unrecoverable exception ********** */
20−#define ILL_CPLB_VI 9 /* D/I CPLB protect violation ******** */
21−#define ILL_CPLB_MISS 10 /* D/I CPLB miss ******** */
22−#define ILL_CPLB_MULHIT 11 /* D/I CPLB multiple hit ******** */
23−#undef NSIGILL
24−#define NSIGILL 11
25−
26−/*
27− * SIGBUS si_codes
28− */
29−#define BUS_OPFETCH 4 /* error from instruction fetch ******** */
30−#undef NSIGBUS
31−#define NSIGBUS 4
32−
33−/*
34− * SIGTRAP si_codes
35− */
36−#define TRAP_STEP 1 /* single-step breakpoint************* */
37−#define TRAP_TRACEFLOW 2 /* trace buffer overflow ************* */
38−#define TRAP_WATCHPT 3 /* watchpoint match ************* */
39−#define TRAP_ILLTRAP 4 /* illegal trap ************* */
40−#undef NSIGTRAP
41−#define NSIGTRAP 4
42−
43−/*
44− * SIGSEGV si_codes
45− */
46−#define SEGV_STACKFLOW 3 /* stack overflow */
47−#undef NSIGSEGV
48−#define NSIGSEGV 3
49−
5018 #endif /* _UAPI_BFIN_SIGINFO_H */
include/uapi/asm-generic/siginfo.h+27−2
@@ -179,13 +179,24 @@ typedef struct siginfo { · 178 unmodified lines
179179 * SIGILL si_codes
180180 */
181181 #define ILL_ILLOPC 1 /* illegal opcode */
182+#ifdef __bfin__
183+# define ILL_ILLPARAOP 2 /* illegal opcode combine */
184+#endif
182185 #define ILL_ILLOPN 2 /* illegal operand */
183186 #define ILL_ILLADR 3 /* illegal addressing mode */
184187 #define ILL_ILLTRP 4 /* illegal trap */
188+#ifdef __bfin__
189+# define ILL_ILLEXCPT 4 /* unrecoverable exception */
190+#endif
185191 #define ILL_PRVOPC 5 /* privileged opcode */
186192 #define ILL_PRVREG 6 /* privileged register */
187193 #define ILL_COPROC 7 /* coprocessor error */
188194 #define ILL_BADSTK 8 /* internal stack error */
195+#ifdef __bfin__
196+# define ILL_CPLB_VI 9 /* D/I CPLB protect violation */
197+# define ILL_CPLB_MISS 10 /* D/I CPLB miss */
198+# define ILL_CPLB_MULHIT 11 /* D/I CPLB multiple hit */
199+#endif
189200 #ifdef __tile__
190201 # define ILL_DBLFLT 9 /* double fault */
191202 # define ILL_HARDWALL 10 /* user networks hardwall violation */
@@ -225,7 +236,11 @@ typedef struct siginfo { · 33 unmodified lines
225236 */
226237 #define SEGV_MAPERR 1 /* address not mapped to object */
227238 #define SEGV_ACCERR 2 /* invalid permissions for mapped object */
228−#define SEGV_BNDERR 3 /* failed address bound checks */
239+#ifdef __bfin__
240+# define SEGV_STACKFLOW 3 /* stack overflow */
241+#else
242+# define SEGV_BNDERR 3 /* failed address bound checks */
243+#endif
229244 #ifdef __ia64__
230245 # define __SEGV_PSTKOVF 4 /* paragraph stack overflow */
231246 #else
@@ -239,8 +254,12 @@ typedef struct siginfo { · 7 unmodified lines
239254 #define BUS_ADRALN 1 /* invalid address alignment */
240255 #define BUS_ADRERR 2 /* non-existent physical address */
241256 #define BUS_OBJERR 3 /* object specific hardware error */
257+#ifdef __bfin__
258+# define BUS_OPFETCH 4 /* error from instruction fetch */
259+#else
242260 /* hardware memory error consumed on a machine check: action required */
243−#define BUS_MCEERR_AR 4
261+# define BUS_MCEERR_AR 4
262+#endif
244263 /* hardware memory error detected in process but not consumed: action optional*/
245264 #define BUS_MCEERR_AO 5
246265 #define NSIGBUS 5
@@ -252,6 +271,12 @@ typedef struct siginfo { · 5 unmodified lines
252271 #define TRAP_TRACE 2 /* process trace trap */
253272 #define TRAP_BRANCH 3 /* process taken branch trap */
254273 #define TRAP_HWBKPT 4 /* hardware breakpoint/watchpoint */
274+#ifdef __bfin__
275+# define TRAP_STEP 1 /* single-step breakpoint */
276+# define TRAP_TRACEFLOW 2 /* trace buffer overflow */
277+# define TRAP_WATCHPT 3 /* watchpoint match */
278+# define TRAP_ILLTRAP 4 /* illegal trap */
279+#endif
255280 #define NSIGTRAP 4
256281
257282 /*
kernel/signal.c+6−3
@@ -2770,13 +2770,16 @@ int copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from) · 2769 unmodified lines
27702770 err |= __put_user(from->si_flags, &to->si_flags);
27712771 err |= __put_user(from->si_isr, &to->si_isr);
27722772 #endif
2773−#ifdef BUS_MCEERR_AO
27742773 /*
27752774 * Other callers might not initialize the si_lsb field,
27762775 * so check explicitly for the right codes here.
27772776 */
2778− if (from->si_signo == SIGBUS &&
2779− (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO))
2777+#ifdef BUS_MCEERR_AR
2778+ if (from->si_signo == SIGBUS && from->si_code == BUS_MCEERR_AR)
2779+ err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb);
2780+#endif
2781+#ifdef BUS_MCEERR_AO
2782+ if (from->si_signo == SIGBUS && from->si_code == BUS_MCEERR_AO)
27802783 err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb);
27812784 #endif
27822785 #ifdef SEGV_BNDERR

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t