Skip to content

Commit cda2b94

Browse files
author
Alex Shi
committed
Merge tag 'v4.4.89' into linux-linaro-lsk-v4.4
This is the 4.4.89 stable release
2 parents 9173606 + 10def3a commit cda2b94

58 files changed

Lines changed: 818 additions & 423 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
VERSION = 4
22
PATCHLEVEL = 4
3-
SUBLEVEL = 88
3+
SUBLEVEL = 89
44
EXTRAVERSION =
55
NAME = Blurry Fish Butt
66

arch/arc/kernel/entry.S

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,12 @@ ENTRY(EV_MachineCheck)
104104
lr r0, [efa]
105105
mov r1, sp
106106

107+
; hardware auto-disables MMU, re-enable it to allow kernel vaddr
108+
; access for say stack unwinding of modules for crash dumps
109+
lr r3, [ARC_REG_PID]
110+
or r3, r3, MMU_ENABLE
111+
sr r3, [ARC_REG_PID]
112+
107113
lsr r3, r2, 8
108114
bmsk r3, r3, 7
109115
brne r3, ECR_C_MCHK_DUP_TLB, 1f

arch/arc/mm/tlb.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -885,9 +885,6 @@ void do_tlb_overlap_fault(unsigned long cause, unsigned long address,
885885

886886
local_irq_save(flags);
887887

888-
/* re-enable the MMU */
889-
write_aux_reg(ARC_REG_PID, MMU_ENABLE | read_aux_reg(ARC_REG_PID));
890-
891888
/* loop thru all sets of TLB */
892889
for (set = 0; set < mmu->sets; set++) {
893890

arch/mips/math-emu/dp_fmax.c

Lines changed: 63 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,26 @@ union ieee754dp ieee754dp_fmax(union ieee754dp x, union ieee754dp y)
4747
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
4848
return ieee754dp_nanxcpt(x);
4949

50-
/* numbers are preferred to NaNs */
50+
/*
51+
* Quiet NaN handling
52+
*/
53+
54+
/*
55+
* The case of both inputs quiet NaNs
56+
*/
57+
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
58+
return x;
59+
60+
/*
61+
* The cases of exactly one input quiet NaN (numbers
62+
* are here preferred as returned values to NaNs)
63+
*/
5164
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
5265
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
5366
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
5467
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
5568
return x;
5669

57-
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
5870
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
5971
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
6072
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -80,9 +92,7 @@ union ieee754dp ieee754dp_fmax(union ieee754dp x, union ieee754dp y)
8092
return ys ? x : y;
8193

8294
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
83-
if (xs == ys)
84-
return x;
85-
return ieee754dp_zero(1);
95+
return ieee754dp_zero(xs & ys);
8696

8797
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
8898
DPDNORMX;
@@ -106,16 +116,32 @@ union ieee754dp ieee754dp_fmax(union ieee754dp x, union ieee754dp y)
106116
else if (xs < ys)
107117
return x;
108118

109-
/* Compare exponent */
110-
if (xe > ye)
111-
return x;
112-
else if (xe < ye)
113-
return y;
119+
/* Signs of inputs are equal, let's compare exponents */
120+
if (xs == 0) {
121+
/* Inputs are both positive */
122+
if (xe > ye)
123+
return x;
124+
else if (xe < ye)
125+
return y;
126+
} else {
127+
/* Inputs are both negative */
128+
if (xe > ye)
129+
return y;
130+
else if (xe < ye)
131+
return x;
132+
}
114133

115-
/* Compare mantissa */
134+
/* Signs and exponents of inputs are equal, let's compare mantissas */
135+
if (xs == 0) {
136+
/* Inputs are both positive, with equal signs and exponents */
137+
if (xm <= ym)
138+
return y;
139+
return x;
140+
}
141+
/* Inputs are both negative, with equal signs and exponents */
116142
if (xm <= ym)
117-
return y;
118-
return x;
143+
return x;
144+
return y;
119145
}
120146

121147
union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
@@ -147,14 +173,26 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
147173
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
148174
return ieee754dp_nanxcpt(x);
149175

150-
/* numbers are preferred to NaNs */
176+
/*
177+
* Quiet NaN handling
178+
*/
179+
180+
/*
181+
* The case of both inputs quiet NaNs
182+
*/
183+
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
184+
return x;
185+
186+
/*
187+
* The cases of exactly one input quiet NaN (numbers
188+
* are here preferred as returned values to NaNs)
189+
*/
151190
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
152191
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
153192
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
154193
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
155194
return x;
156195

157-
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
158196
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
159197
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
160198
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -164,14 +202,16 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
164202
/*
165203
* Infinity and zero handling
166204
*/
205+
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
206+
return ieee754dp_inf(xs & ys);
207+
167208
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
168209
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
169210
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
170211
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_ZERO):
171212
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
172213
return x;
173214

174-
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
175215
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_INF):
176216
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_INF):
177217
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
@@ -180,9 +220,7 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
180220
return y;
181221

182222
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
183-
if (xs == ys)
184-
return x;
185-
return ieee754dp_zero(1);
223+
return ieee754dp_zero(xs & ys);
186224

187225
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
188226
DPDNORMX;
@@ -207,7 +245,11 @@ union ieee754dp ieee754dp_fmaxa(union ieee754dp x, union ieee754dp y)
207245
return y;
208246

209247
/* Compare mantissa */
210-
if (xm <= ym)
248+
if (xm < ym)
211249
return y;
212-
return x;
250+
else if (xm > ym)
251+
return x;
252+
else if (xs == 0)
253+
return x;
254+
return y;
213255
}

arch/mips/math-emu/dp_fmin.c

Lines changed: 64 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,26 @@ union ieee754dp ieee754dp_fmin(union ieee754dp x, union ieee754dp y)
4747
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
4848
return ieee754dp_nanxcpt(x);
4949

50-
/* numbers are preferred to NaNs */
50+
/*
51+
* Quiet NaN handling
52+
*/
53+
54+
/*
55+
* The case of both inputs quiet NaNs
56+
*/
57+
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
58+
return x;
59+
60+
/*
61+
* The cases of exactly one input quiet NaN (numbers
62+
* are here preferred as returned values to NaNs)
63+
*/
5164
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
5265
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
5366
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
5467
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
5568
return x;
5669

57-
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
5870
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
5971
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
6072
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -80,9 +92,7 @@ union ieee754dp ieee754dp_fmin(union ieee754dp x, union ieee754dp y)
8092
return ys ? y : x;
8193

8294
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
83-
if (xs == ys)
84-
return x;
85-
return ieee754dp_zero(1);
95+
return ieee754dp_zero(xs | ys);
8696

8797
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
8898
DPDNORMX;
@@ -106,16 +116,32 @@ union ieee754dp ieee754dp_fmin(union ieee754dp x, union ieee754dp y)
106116
else if (xs < ys)
107117
return y;
108118

109-
/* Compare exponent */
110-
if (xe > ye)
111-
return y;
112-
else if (xe < ye)
113-
return x;
119+
/* Signs of inputs are the same, let's compare exponents */
120+
if (xs == 0) {
121+
/* Inputs are both positive */
122+
if (xe > ye)
123+
return y;
124+
else if (xe < ye)
125+
return x;
126+
} else {
127+
/* Inputs are both negative */
128+
if (xe > ye)
129+
return x;
130+
else if (xe < ye)
131+
return y;
132+
}
114133

115-
/* Compare mantissa */
134+
/* Signs and exponents of inputs are equal, let's compare mantissas */
135+
if (xs == 0) {
136+
/* Inputs are both positive, with equal signs and exponents */
137+
if (xm <= ym)
138+
return x;
139+
return y;
140+
}
141+
/* Inputs are both negative, with equal signs and exponents */
116142
if (xm <= ym)
117-
return x;
118-
return y;
143+
return y;
144+
return x;
119145
}
120146

121147
union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
@@ -147,14 +173,26 @@ union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
147173
case CLPAIR(IEEE754_CLASS_SNAN, IEEE754_CLASS_INF):
148174
return ieee754dp_nanxcpt(x);
149175

150-
/* numbers are preferred to NaNs */
176+
/*
177+
* Quiet NaN handling
178+
*/
179+
180+
/*
181+
* The case of both inputs quiet NaNs
182+
*/
183+
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
184+
return x;
185+
186+
/*
187+
* The cases of exactly one input quiet NaN (numbers
188+
* are here preferred as returned values to NaNs)
189+
*/
151190
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_QNAN):
152191
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_QNAN):
153192
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_QNAN):
154193
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_QNAN):
155194
return x;
156195

157-
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_QNAN):
158196
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_ZERO):
159197
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_NORM):
160198
case CLPAIR(IEEE754_CLASS_QNAN, IEEE754_CLASS_DNORM):
@@ -164,25 +202,25 @@ union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
164202
/*
165203
* Infinity and zero handling
166204
*/
205+
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
206+
return ieee754dp_inf(xs | ys);
207+
167208
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_ZERO):
168209
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_NORM):
169210
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_DNORM):
170211
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_ZERO):
171212
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_ZERO):
172-
return x;
213+
return y;
173214

174-
case CLPAIR(IEEE754_CLASS_INF, IEEE754_CLASS_INF):
175215
case CLPAIR(IEEE754_CLASS_NORM, IEEE754_CLASS_INF):
176216
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_INF):
177217
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_INF):
178218
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_NORM):
179219
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_DNORM):
180-
return y;
220+
return x;
181221

182222
case CLPAIR(IEEE754_CLASS_ZERO, IEEE754_CLASS_ZERO):
183-
if (xs == ys)
184-
return x;
185-
return ieee754dp_zero(1);
223+
return ieee754dp_zero(xs | ys);
186224

187225
case CLPAIR(IEEE754_CLASS_DNORM, IEEE754_CLASS_DNORM):
188226
DPDNORMX;
@@ -207,7 +245,11 @@ union ieee754dp ieee754dp_fmina(union ieee754dp x, union ieee754dp y)
207245
return x;
208246

209247
/* Compare mantissa */
210-
if (xm <= ym)
248+
if (xm < ym)
249+
return x;
250+
else if (xm > ym)
251+
return y;
252+
else if (xs == 1)
211253
return x;
212254
return y;
213255
}

0 commit comments

Comments
 (0)