/* * linux/arch/unicore32/include/asm/cpu-single.h * * Code specific to PKUnity SoC and UniCore ISA * * Copyright (C) 2001-2010 GUAN Xue-tao * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __UNICORE_CPU_SINGLE_H__ #define __UNICORE_CPU_SINGLE_H__ #include <asm/page.h> #include <asm/memory.h> #ifdef __KERNEL__ #ifndef __ASSEMBLY__ #define cpu_switch_mm(pgd, mm) cpu_do_switch_mm(virt_to_phys(pgd), mm) #define cpu_get_pgd() \ ({ \ unsigned long pg; \ __asm__("movc %0, p0.c2, #0" \ : "=r" (pg) : : "cc"); \ pg &= ~0x0fff; \ (pgd_t *)phys_to_virt(pg); \ }) struct mm_struct; /* declare all the functions as extern */ extern void cpu_proc_fin(void); extern int cpu_do_idle(void); extern void cpu_dcache_clean_area(void *, int); extern void cpu_do_switch_mm(unsigned long pgd_phys, struct mm_struct *mm); extern void cpu_set_pte(pte_t *ptep, pte_t pte); extern void cpu_reset(unsigned long addr) __attribute__((noreturn)); #endif /* __ASSEMBLY__ */ #endif /* __KERNEL__ */ #endif /* __UNICORE_CPU_SINGLE_H__ */