Commit 9079095
committed
Implement MMU translation caching with 2-way load
This adds TLB to cache virtual-to-physical address translations:
- cache_fetch: 1-entry direct-mapped for instruction fetch
- cache_load: 2-entry direct-mapped with hash-based indexing
- cache_store: 1-entry direct-mapped for data stores
Cache invalidation handled at all necessary points: SATP writes,
fence instructions, mode switches, and trap entry/exit.
Optional statistics support via MMU_CACHE_STATS compile flag shows
~96% fetch, ~69% load, and ~84% store hit rates during kernel boot.1 parent 00cc4ed commit 9079095
3 files changed
+192
-23
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
11 | 14 | | |
12 | 15 | | |
13 | 16 | | |
| |||
395 | 398 | | |
396 | 399 | | |
397 | 400 | | |
398 | | - | |
| 401 | + | |
399 | 402 | | |
400 | 403 | | |
401 | 404 | | |
402 | | - | |
| 405 | + | |
403 | 406 | | |
404 | 407 | | |
405 | 408 | | |
| |||
796 | 799 | | |
797 | 800 | | |
798 | 801 | | |
| 802 | + | |
| 803 | + | |
| 804 | + | |
| 805 | + | |
| 806 | + | |
| 807 | + | |
| 808 | + | |
| 809 | + | |
| 810 | + | |
| 811 | + | |
| 812 | + | |
| 813 | + | |
| 814 | + | |
| 815 | + | |
| 816 | + | |
| 817 | + | |
| 818 | + | |
| 819 | + | |
| 820 | + | |
| 821 | + | |
| 822 | + | |
| 823 | + | |
| 824 | + | |
| 825 | + | |
| 826 | + | |
| 827 | + | |
| 828 | + | |
| 829 | + | |
| 830 | + | |
| 831 | + | |
| 832 | + | |
| 833 | + | |
| 834 | + | |
| 835 | + | |
| 836 | + | |
| 837 | + | |
| 838 | + | |
| 839 | + | |
| 840 | + | |
| 841 | + | |
| 842 | + | |
| 843 | + | |
| 844 | + | |
| 845 | + | |
799 | 846 | | |
800 | 847 | | |
801 | 848 | | |
| 849 | + | |
| 850 | + | |
| 851 | + | |
| 852 | + | |
802 | 853 | | |
803 | 854 | | |
804 | 855 | | |
| |||
833 | 884 | | |
834 | 885 | | |
835 | 886 | | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
836 | 904 | | |
837 | 905 | | |
838 | 906 | | |
| |||
964 | 1032 | | |
965 | 1033 | | |
966 | 1034 | | |
967 | | - | |
| 1035 | + | |
| 1036 | + | |
| 1037 | + | |
| 1038 | + | |
| 1039 | + | |
| 1040 | + | |
| 1041 | + | |
968 | 1042 | | |
969 | | - | |
| 1043 | + | |
970 | 1044 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
8 | 21 | | |
9 | 22 | | |
10 | 23 | | |
| |||
169 | 182 | | |
170 | 183 | | |
171 | 184 | | |
172 | | - | |
| 185 | + | |
173 | 186 | | |
174 | 187 | | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
175 | 191 | | |
176 | 192 | | |
177 | 193 | | |
| |||
284 | 300 | | |
285 | 301 | | |
286 | 302 | | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
287 | 306 | | |
288 | 307 | | |
289 | 308 | | |
| |||
295 | 314 | | |
296 | 315 | | |
297 | 316 | | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
298 | 322 | | |
299 | 323 | | |
300 | 324 | | |
| |||
304 | 328 | | |
305 | 329 | | |
306 | 330 | | |
307 | | - | |
308 | | - | |
309 | | - | |
310 | | - | |
311 | | - | |
312 | | - | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
313 | 361 | | |
314 | 362 | | |
315 | 363 | | |
316 | 364 | | |
317 | | - | |
| 365 | + | |
318 | 366 | | |
319 | 367 | | |
320 | 368 | | |
| |||
323 | 371 | | |
324 | 372 | | |
325 | 373 | | |
326 | | - | |
327 | | - | |
328 | | - | |
329 | | - | |
330 | | - | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
331 | 399 | | |
332 | 400 | | |
333 | | - | |
| 401 | + | |
334 | 402 | | |
335 | 403 | | |
336 | 404 | | |
337 | 405 | | |
338 | 406 | | |
339 | | - | |
| 407 | + | |
340 | 408 | | |
341 | 409 | | |
342 | | - | |
| 410 | + | |
343 | 411 | | |
344 | 412 | | |
345 | 413 | | |
| |||
513 | 581 | | |
514 | 582 | | |
515 | 583 | | |
516 | | - | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
517 | 587 | | |
518 | 588 | | |
519 | 589 | | |
520 | 590 | | |
521 | 591 | | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
522 | 595 | | |
| 596 | + | |
523 | 597 | | |
524 | 598 | | |
525 | 599 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
37 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
38 | 53 | | |
39 | 54 | | |
40 | 55 | | |
| |||
85 | 100 | | |
86 | 101 | | |
87 | 102 | | |
88 | | - | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
89 | 107 | | |
90 | 108 | | |
91 | 109 | | |
| |||
160 | 178 | | |
161 | 179 | | |
162 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
0 commit comments