Now the exception vector for CPS systems are allocated on-fly with memblock as well. It will try to allocate from KSEG1 first, and then try to allocate in low 4G if possible. The main reset vector is now generated by uasm, to avoid tons of patches to the code. Other vectors are copied to the location later. move 64bits fix in an other patch fix cache issue with mips_cps_core_entry rewrite the patch to reduce the diff stat move extern in header use cache address for copying vector gc: use the new macro CKSEG[0A1]DDR_OR_64BIT() Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
57 lines
1.2 KiB
C
57 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2013 Imagination Technologies
|
|
* Author: Paul Burton <paul.burton@mips.com>
|
|
*/
|
|
|
|
#ifndef __MIPS_ASM_SMP_CPS_H__
|
|
#define __MIPS_ASM_SMP_CPS_H__
|
|
|
|
#define CPS_ENTRY_PATCH_INSNS 6
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
struct vpe_boot_config {
|
|
unsigned long pc;
|
|
unsigned long sp;
|
|
unsigned long gp;
|
|
};
|
|
|
|
struct core_boot_config {
|
|
atomic_t vpe_mask;
|
|
struct vpe_boot_config *vpe_config;
|
|
};
|
|
|
|
extern struct core_boot_config *mips_cps_core_bootcfg;
|
|
|
|
extern void mips_cps_core_boot(int cca, void __iomem *gcr_base);
|
|
extern void mips_cps_core_init(void);
|
|
|
|
extern void mips_cps_boot_vpes(struct core_boot_config *cfg, unsigned vpe);
|
|
|
|
extern void mips_cps_pm_save(void);
|
|
extern void mips_cps_pm_restore(void);
|
|
|
|
extern void excep_tlbfill(void);
|
|
extern void excep_xtlbfill(void);
|
|
extern void excep_cache(void);
|
|
extern void excep_genex(void);
|
|
extern void excep_intex(void);
|
|
extern void excep_ejtag(void);
|
|
|
|
#ifdef CONFIG_MIPS_CPS
|
|
|
|
extern bool mips_cps_smp_in_use(void);
|
|
|
|
#else /* !CONFIG_MIPS_CPS */
|
|
|
|
static inline bool mips_cps_smp_in_use(void) { return false; }
|
|
|
|
#endif /* !CONFIG_MIPS_CPS */
|
|
|
|
#else /* __ASSEMBLY__ */
|
|
|
|
.extern mips_cps_bootcfg;
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
#endif /* __MIPS_ASM_SMP_CPS_H__ */
|