m68k: sun3: Fix DEBUG_MMU_EMU build

With DEBUG_MMU_EMU enabled:

    arch/m68k/sun3/mmu_emu.c: In function ‘mmu_emu_handle_fault’:
    arch/m68k/sun3/mmu_emu.c:420:38: error: implicit declaration of function ‘get_fs’; did you mean ‘sget_fc’? [-Werror=implicit-function-declaration]
      420 |         pr_info("seg:%ld crp:%p ->", get_fs().seg, crp);
	  |                                      ^~~~~~

    [...]

    arch/m68k/sun3/mmu_emu.c:420:46: error: request for member ‘seg’ in something not a structure or union
      420 |         pr_info("seg:%ld crp:%p ->", get_fs().seg, crp);
	  |                                              ^

Fix this by reintroducing and using a helper to retrieve the current
value of the DFC register.

While at it, replace "%p" by "%px", as there is no point in printing
obfuscated pointers during debugging.

Fixes: 9fde034864 ("m68k: Remove set_fs()")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/b1d12a1d24b4aea9f98d905383ba932b2dc382e6.1737387419.git.geert@linux-m68k.org
pull/1184/head
Geert Uytterhoeven 2025-01-20 16:40:22 +01:00
parent 751b3d8d88
commit 723be3c6ab
2 changed files with 16 additions and 2 deletions

View File

@ -95,10 +95,24 @@ static inline void set_fc(unsigned long val)
"movec %0,%/dfc\n\t"
: /* no outputs */ : "r" (val) : "memory");
}
static inline unsigned long get_fc(void)
{
unsigned long val;
__asm__ ("movec %/dfc,%0" : "=r" (val) : );
return val;
}
#else
static inline void set_fc(unsigned long val)
{
}
static inline unsigned long get_fc(void)
{
return USER_DATA;
}
#endif /* CONFIG_CPU_HAS_ADDRESS_SPACES */
struct thread_struct {

View File

@ -371,7 +371,7 @@ int mmu_emu_handle_fault (unsigned long vaddr, int read_flag, int kernel_fault)
}
#ifdef DEBUG_MMU_EMU
pr_info("%s: vaddr=%lx type=%s crp=%p\n", __func__, vaddr,
pr_info("%s: vaddr=%lx type=%s crp=%px\n", __func__, vaddr,
str_read_write(read_flag), crp);
#endif
@ -418,7 +418,7 @@ int mmu_emu_handle_fault (unsigned long vaddr, int read_flag, int kernel_fault)
pte_val (*pte) |= SUN3_PAGE_ACCESSED;
#ifdef DEBUG_MMU_EMU
pr_info("seg:%ld crp:%p ->", get_fs().seg, crp);
pr_info("seg:%ld crp:%px ->", get_fc(), crp);
print_pte_vaddr (vaddr);
pr_cont("\n");
#endif