[SPARC64]: Args to SUNW,set-trap-table are 64-bit.
authorDavid S. Miller <davem@davemloft.net>
Tue, 21 Feb 2006 06:56:01 +0000 (22:56 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 20 Mar 2006 09:13:48 +0000 (01:13 -0800)
They were getting truncated to 32-bit and this is very bad
when your MMU fault status area is in physical memory above
4GB on SUN4V.

Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc64/prom/misc.c

index 36d2b9c..90df421 100644 (file)
@@ -133,12 +133,17 @@ int prom_getprev(void)
 /* Install Linux trap table so PROM uses that instead of its own. */
 void prom_set_trap_table(unsigned long tba)
 {
-       p1275_cmd("SUNW,set-trap-table", P1275_INOUT(1, 0), tba);
+       p1275_cmd("SUNW,set-trap-table",
+                 (P1275_ARG(0, P1275_ARG_IN_64B) |
+                  P1275_INOUT(1, 0)), tba);
 }
 
 void prom_set_trap_table_sun4v(unsigned long tba, unsigned long mmfsa)
 {
-       p1275_cmd("SUNW,set-trap-table", P1275_INOUT(2, 0), tba, mmfsa);
+       p1275_cmd("SUNW,set-trap-table",
+                 (P1275_ARG(0, P1275_ARG_IN_64B) |
+                  P1275_ARG(1, P1275_ARG_IN_64B) |
+                  P1275_INOUT(2, 0)), tba, mmfsa);
 }
 
 int prom_get_mmu_ihandle(void)