hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/arch/mips/kernel/mips-r2-to-r6-emul.c
....@@ -1109,7 +1109,7 @@
11091109 err = SIGILL;
11101110 break;
11111111 }
1112
- /* fall through */
1112
+ fallthrough;
11131113 case beql_op:
11141114 case bnel_op:
11151115 if (delay_slot(regs)) {
....@@ -1174,13 +1174,6 @@
11741174 fpu_emul:
11751175 regs->regs[31] = r31;
11761176 regs->cp0_epc = epc;
1177
- if (!used_math()) { /* First time FPU user. */
1178
- preempt_disable();
1179
- err = init_fpu();
1180
- preempt_enable();
1181
- set_used_math();
1182
- }
1183
- lose_fpu(1); /* Save FPU state for the emulator. */
11841177
11851178 err = fpu_emulator_cop1Handler(regs, &current->thread.fpu, 0,
11861179 &fault_addr);
....@@ -1212,7 +1205,7 @@
12121205 case lwl_op:
12131206 rt = regs->regs[MIPSInst_RT(inst)];
12141207 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1215
- if (!access_ok(VERIFY_READ, (void __user *)vaddr, 4)) {
1208
+ if (!access_ok((void __user *)vaddr, 4)) {
12161209 current->thread.cp0_baduaddr = vaddr;
12171210 err = SIGSEGV;
12181211 break;
....@@ -1285,7 +1278,7 @@
12851278 case lwr_op:
12861279 rt = regs->regs[MIPSInst_RT(inst)];
12871280 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1288
- if (!access_ok(VERIFY_READ, (void __user *)vaddr, 4)) {
1281
+ if (!access_ok((void __user *)vaddr, 4)) {
12891282 current->thread.cp0_baduaddr = vaddr;
12901283 err = SIGSEGV;
12911284 break;
....@@ -1359,7 +1352,7 @@
13591352 case swl_op:
13601353 rt = regs->regs[MIPSInst_RT(inst)];
13611354 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1362
- if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 4)) {
1355
+ if (!access_ok((void __user *)vaddr, 4)) {
13631356 current->thread.cp0_baduaddr = vaddr;
13641357 err = SIGSEGV;
13651358 break;
....@@ -1429,7 +1422,7 @@
14291422 case swr_op:
14301423 rt = regs->regs[MIPSInst_RT(inst)];
14311424 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1432
- if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 4)) {
1425
+ if (!access_ok((void __user *)vaddr, 4)) {
14331426 current->thread.cp0_baduaddr = vaddr;
14341427 err = SIGSEGV;
14351428 break;
....@@ -1504,7 +1497,7 @@
15041497
15051498 rt = regs->regs[MIPSInst_RT(inst)];
15061499 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1507
- if (!access_ok(VERIFY_READ, (void __user *)vaddr, 8)) {
1500
+ if (!access_ok((void __user *)vaddr, 8)) {
15081501 current->thread.cp0_baduaddr = vaddr;
15091502 err = SIGSEGV;
15101503 break;
....@@ -1623,7 +1616,7 @@
16231616
16241617 rt = regs->regs[MIPSInst_RT(inst)];
16251618 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1626
- if (!access_ok(VERIFY_READ, (void __user *)vaddr, 8)) {
1619
+ if (!access_ok((void __user *)vaddr, 8)) {
16271620 current->thread.cp0_baduaddr = vaddr;
16281621 err = SIGSEGV;
16291622 break;
....@@ -1742,7 +1735,7 @@
17421735
17431736 rt = regs->regs[MIPSInst_RT(inst)];
17441737 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1745
- if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 8)) {
1738
+ if (!access_ok((void __user *)vaddr, 8)) {
17461739 current->thread.cp0_baduaddr = vaddr;
17471740 err = SIGSEGV;
17481741 break;
....@@ -1860,7 +1853,7 @@
18601853
18611854 rt = regs->regs[MIPSInst_RT(inst)];
18621855 vaddr = regs->regs[MIPSInst_RS(inst)] + MIPSInst_SIMM(inst);
1863
- if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 8)) {
1856
+ if (!access_ok((void __user *)vaddr, 8)) {
18641857 current->thread.cp0_baduaddr = vaddr;
18651858 err = SIGSEGV;
18661859 break;
....@@ -1977,7 +1970,7 @@
19771970 err = SIGBUS;
19781971 break;
19791972 }
1980
- if (!access_ok(VERIFY_READ, (void __user *)vaddr, 4)) {
1973
+ if (!access_ok((void __user *)vaddr, 4)) {
19811974 current->thread.cp0_baduaddr = vaddr;
19821975 err = SIGBUS;
19831976 break;
....@@ -2033,7 +2026,7 @@
20332026 err = SIGBUS;
20342027 break;
20352028 }
2036
- if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 4)) {
2029
+ if (!access_ok((void __user *)vaddr, 4)) {
20372030 current->thread.cp0_baduaddr = vaddr;
20382031 err = SIGBUS;
20392032 break;
....@@ -2096,7 +2089,7 @@
20962089 err = SIGBUS;
20972090 break;
20982091 }
2099
- if (!access_ok(VERIFY_READ, (void __user *)vaddr, 8)) {
2092
+ if (!access_ok((void __user *)vaddr, 8)) {
21002093 current->thread.cp0_baduaddr = vaddr;
21012094 err = SIGBUS;
21022095 break;
....@@ -2157,7 +2150,7 @@
21572150 err = SIGBUS;
21582151 break;
21592152 }
2160
- if (!access_ok(VERIFY_WRITE, (void __user *)vaddr, 8)) {
2153
+ if (!access_ok((void __user *)vaddr, 8)) {
21612154 current->thread.cp0_baduaddr = vaddr;
21622155 err = SIGBUS;
21632156 break;
....@@ -2242,7 +2235,7 @@
22422235
22432236 #ifdef CONFIG_DEBUG_FS
22442237
2245
-static int mipsr2_stats_show(struct seq_file *s, void *unused)
2238
+static int mipsr2_emul_show(struct seq_file *s, void *unused)
22462239 {
22472240
22482241 seq_printf(s, "Instruction\tTotal\tBDslot\n------------------------------\n");
....@@ -2308,9 +2301,9 @@
23082301 return 0;
23092302 }
23102303
2311
-static int mipsr2_stats_clear_show(struct seq_file *s, void *unused)
2304
+static int mipsr2_clear_show(struct seq_file *s, void *unused)
23122305 {
2313
- mipsr2_stats_show(s, unused);
2306
+ mipsr2_emul_show(s, unused);
23142307
23152308 __this_cpu_write((mipsr2emustats).movs, 0);
23162309 __this_cpu_write((mipsr2bdemustats).movs, 0);
....@@ -2353,50 +2346,15 @@
23532346 return 0;
23542347 }
23552348
2356
-static int mipsr2_stats_open(struct inode *inode, struct file *file)
2357
-{
2358
- return single_open(file, mipsr2_stats_show, inode->i_private);
2359
-}
2360
-
2361
-static int mipsr2_stats_clear_open(struct inode *inode, struct file *file)
2362
-{
2363
- return single_open(file, mipsr2_stats_clear_show, inode->i_private);
2364
-}
2365
-
2366
-static const struct file_operations mipsr2_emul_fops = {
2367
- .open = mipsr2_stats_open,
2368
- .read = seq_read,
2369
- .llseek = seq_lseek,
2370
- .release = single_release,
2371
-};
2372
-
2373
-static const struct file_operations mipsr2_clear_fops = {
2374
- .open = mipsr2_stats_clear_open,
2375
- .read = seq_read,
2376
- .llseek = seq_lseek,
2377
- .release = single_release,
2378
-};
2379
-
2349
+DEFINE_SHOW_ATTRIBUTE(mipsr2_emul);
2350
+DEFINE_SHOW_ATTRIBUTE(mipsr2_clear);
23802351
23812352 static int __init mipsr2_init_debugfs(void)
23822353 {
2383
- struct dentry *mipsr2_emul;
2384
-
2385
- if (!mips_debugfs_dir)
2386
- return -ENODEV;
2387
-
2388
- mipsr2_emul = debugfs_create_file("r2_emul_stats", S_IRUGO,
2389
- mips_debugfs_dir, NULL,
2390
- &mipsr2_emul_fops);
2391
- if (!mipsr2_emul)
2392
- return -ENOMEM;
2393
-
2394
- mipsr2_emul = debugfs_create_file("r2_emul_stats_clear", S_IRUGO,
2395
- mips_debugfs_dir, NULL,
2396
- &mipsr2_clear_fops);
2397
- if (!mipsr2_emul)
2398
- return -ENOMEM;
2399
-
2354
+ debugfs_create_file("r2_emul_stats", S_IRUGO, mips_debugfs_dir, NULL,
2355
+ &mipsr2_emul_fops);
2356
+ debugfs_create_file("r2_emul_stats_clear", S_IRUGO, mips_debugfs_dir,
2357
+ NULL, &mipsr2_clear_fops);
24002358 return 0;
24012359 }
24022360