Explorar o código

[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>
Maciej W. Rozycki %!s(int64=17) %!d(string=hai) anos
pai
achega
1ac74d528d
Modificáronse 1 ficheiros con 20 adicións e 0 borrados
  1. 20 0
      arch/mips/mm/pg-r4k.c

+ 20 - 0
arch/mips/mm/pg-r4k.c

@@ -347,6 +347,7 @@ void __init build_clear_page(void)
 {
 {
 	unsigned int loop_start;
 	unsigned int loop_start;
 	unsigned long off;
 	unsigned long off;
+	int i;
 
 
 	epc = (unsigned int *) &clear_page_array;
 	epc = (unsigned int *) &clear_page_array;
 	instruction_pending = 0;
 	instruction_pending = 0;
@@ -434,12 +435,22 @@ dest = label();
 	build_jr_ra();
 	build_jr_ra();
 
 
 	BUG_ON(epc > clear_page_array + ARRAY_SIZE(clear_page_array));
 	BUG_ON(epc > clear_page_array + ARRAY_SIZE(clear_page_array));
+
+	pr_info("Synthesized clear page handler (%u instructions).\n",
+		(unsigned int)(epc - clear_page_array));
+
+	pr_debug("\t.set push\n");
+	pr_debug("\t.set noreorder\n");
+	for (i = 0; i < (epc - clear_page_array); i++)
+		pr_debug("\t.word 0x%08x\n", clear_page_array[i]);
+	pr_debug("\t.set pop\n");
 }
 }
 
 
 void __init build_copy_page(void)
 void __init build_copy_page(void)
 {
 {
 	unsigned int loop_start;
 	unsigned int loop_start;
 	unsigned long off;
 	unsigned long off;
+	int i;
 
 
 	epc = (unsigned int *) &copy_page_array;
 	epc = (unsigned int *) &copy_page_array;
 	store_offset = load_offset = 0;
 	store_offset = load_offset = 0;
@@ -515,4 +526,13 @@ dest = label();
 	build_jr_ra();
 	build_jr_ra();
 
 
 	BUG_ON(epc > copy_page_array + ARRAY_SIZE(copy_page_array));
 	BUG_ON(epc > copy_page_array + ARRAY_SIZE(copy_page_array));
+
+	pr_info("Synthesized copy page handler (%u instructions).\n",
+		(unsigned int)(epc - copy_page_array));
+
+	pr_debug("\t.set push\n");
+	pr_debug("\t.set noreorder\n");
+	for (i = 0; i < (epc - copy_page_array); i++)
+		pr_debug("\t.word 0x%08x\n", copy_page_array[i]);
+	pr_debug("\t.set pop\n");
 }
 }