diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2007-10-02 09:54:15 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2007-10-11 18:46:14 -0400 |
commit | 1ac74d528dcfe3dcaa6072289d71fa96569f5e39 (patch) | |
tree | efadcb44311163798ac2b4729733af4dc9dfe9ed /arch/mips/mm | |
parent | f13558c2a4a7339192ff7148ee903340affdb790 (diff) |
[MIPS] pg-r4k.c: Dump the generated code
Dump the generated code for clear/copy page calls like it is done for TLB
fault handlers. Useful for debugging.
Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/mm')
-rw-r--r-- | arch/mips/mm/pg-r4k.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/mips/mm/pg-r4k.c b/arch/mips/mm/pg-r4k.c index e47e9e9486bf..c0294541d295 100644 --- a/arch/mips/mm/pg-r4k.c +++ b/arch/mips/mm/pg-r4k.c | |||
@@ -347,6 +347,7 @@ void __init build_clear_page(void) | |||
347 | { | 347 | { |
348 | unsigned int loop_start; | 348 | unsigned int loop_start; |
349 | unsigned long off; | 349 | unsigned long off; |
350 | int i; | ||
350 | 351 | ||
351 | epc = (unsigned int *) &clear_page_array; | 352 | epc = (unsigned int *) &clear_page_array; |
352 | instruction_pending = 0; | 353 | instruction_pending = 0; |
@@ -434,12 +435,22 @@ dest = label(); | |||
434 | build_jr_ra(); | 435 | build_jr_ra(); |
435 | 436 | ||
436 | BUG_ON(epc > clear_page_array + ARRAY_SIZE(clear_page_array)); | 437 | BUG_ON(epc > clear_page_array + ARRAY_SIZE(clear_page_array)); |
438 | |||
439 | pr_info("Synthesized clear page handler (%u instructions).\n", | ||
440 | (unsigned int)(epc - clear_page_array)); | ||
441 | |||
442 | pr_debug("\t.set push\n"); | ||
443 | pr_debug("\t.set noreorder\n"); | ||
444 | for (i = 0; i < (epc - clear_page_array); i++) | ||
445 | pr_debug("\t.word 0x%08x\n", clear_page_array[i]); | ||
446 | pr_debug("\t.set pop\n"); | ||
437 | } | 447 | } |
438 | 448 | ||
439 | void __init build_copy_page(void) | 449 | void __init build_copy_page(void) |
440 | { | 450 | { |
441 | unsigned int loop_start; | 451 | unsigned int loop_start; |
442 | unsigned long off; | 452 | unsigned long off; |
453 | int i; | ||
443 | 454 | ||
444 | epc = (unsigned int *) ©_page_array; | 455 | epc = (unsigned int *) ©_page_array; |
445 | store_offset = load_offset = 0; | 456 | store_offset = load_offset = 0; |
@@ -515,4 +526,13 @@ dest = label(); | |||
515 | build_jr_ra(); | 526 | build_jr_ra(); |
516 | 527 | ||
517 | BUG_ON(epc > copy_page_array + ARRAY_SIZE(copy_page_array)); | 528 | BUG_ON(epc > copy_page_array + ARRAY_SIZE(copy_page_array)); |
529 | |||
530 | pr_info("Synthesized copy page handler (%u instructions).\n", | ||
531 | (unsigned int)(epc - copy_page_array)); | ||
532 | |||
533 | pr_debug("\t.set push\n"); | ||
534 | pr_debug("\t.set noreorder\n"); | ||
535 | for (i = 0; i < (epc - copy_page_array); i++) | ||
536 | pr_debug("\t.word 0x%08x\n", copy_page_array[i]); | ||
537 | pr_debug("\t.set pop\n"); | ||
518 | } | 538 | } |