Commit b023a939 authored by Paul Burton's avatar Paul Burton

MIPS: Avoid using array as parameter to write_c0_kpgd()

Passing an array (swapper_pg_dir) as the argument to write_c0_kpgd() in
setup_pw() will become problematic if we modify __write_64bit_c0_split()
to cast its val argument to unsigned long long, because for 32-bit
kernel builds the size of a pointer will differ from the size of an
unsigned long long. This would fall foul of gcc's pointer-to-int-cast
diagnostic.

Cast the value to a long, which should be the same width as the pointer
that we ultimately want & will be sign extended if required to the
unsigned long long that __write_64bit_c0_split() ultimately needs.
Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
parent ee67855e
...@@ -1509,7 +1509,7 @@ static void setup_pw(void) ...@@ -1509,7 +1509,7 @@ static void setup_pw(void)
#ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT #ifdef CONFIG_MIPS_HUGE_TLB_SUPPORT
write_c0_pwctl(1 << 6 | psn); write_c0_pwctl(1 << 6 | psn);
#endif #endif
write_c0_kpgd(swapper_pg_dir); write_c0_kpgd((long)swapper_pg_dir);
kscratch_used_mask |= (1 << 7); /* KScratch6 is used for KPGD */ kscratch_used_mask |= (1 << 7); /* KScratch6 is used for KPGD */
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment