f12401d721
The mips_cps_boot_vpes function previously included code to retrieve pointers to the core & VPE boot configuration structs. These structures were used both by mips_cps_boot_vpes and by its mips_cps_core_entry callsite. In preparation for skipping the call to mips_cps_boot_vpes on some invocations of mips_cps_core_entry, pull the calculation of those pointers out into a separate function such that it can continue to be shared. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Matt Redfearn <matt.redfearn@imgtec.com> Cc: Niklas Cassel <niklas.cassel@axis.com> Cc: Ezequiel Garcia <ezequiel.garcia@imgtec.com> Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/12337/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
/*
|
|
* Copyright (C) 2013 Imagination Technologies
|
|
* Author: Paul Burton <paul.burton@imgtec.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*/
|
|
|
|
#ifndef __MIPS_ASM_SMP_CPS_H__
|
|
#define __MIPS_ASM_SMP_CPS_H__
|
|
|
|
#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_entry(void);
|
|
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);
|
|
|
|
#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__ */
|