forked from mirrors/linux
		
	MIPS: Don't compile math-emu when CONFIG_MIPS_FP_SUPPORT=n
When CONFIG_MIPS_FP_SUPPORT=n we don't support floating point, so there's no point compiling in our FPU emulator. Avoid doing so, providing stub versions of dsemul cleanup functions that are called from signal & task handling code. Signed-off-by: Paul Burton <paul.burton@mips.com> Patchwork: https://patchwork.linux-mips.org/patch/21012/ Cc: linux-mips@linux-mips.org
This commit is contained in:
		
							parent
							
								
									36a498035b
								
							
						
					
					
						commit
						42b10815d5
					
				
					 2 changed files with 29 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -319,7 +319,7 @@ OBJCOPYFLAGS		+= --remove-section=.reginfo
 | 
			
		|||
head-y := arch/mips/kernel/head.o
 | 
			
		||||
 | 
			
		||||
libs-y			+= arch/mips/lib/
 | 
			
		||||
libs-y			+= arch/mips/math-emu/
 | 
			
		||||
libs-$(CONFIG_MIPS_FP_SUPPORT) += arch/mips/math-emu/
 | 
			
		||||
 | 
			
		||||
# See arch/mips/Kbuild for content of core part of the kernel
 | 
			
		||||
core-y += arch/mips/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,14 @@ extern int mips_dsemul(struct pt_regs *regs, mips_instruction ir,
 | 
			
		|||
 *
 | 
			
		||||
 * Return: True if an emulation frame was returned from, else false.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef CONFIG_MIPS_FP_SUPPORT
 | 
			
		||||
extern bool do_dsemulret(struct pt_regs *xcp);
 | 
			
		||||
#else
 | 
			
		||||
static inline bool do_dsemulret(struct pt_regs *xcp)
 | 
			
		||||
{
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * dsemul_thread_cleanup() - Cleanup thread 'emulation' frame
 | 
			
		||||
| 
						 | 
				
			
			@ -63,8 +70,14 @@ extern bool do_dsemulret(struct pt_regs *xcp);
 | 
			
		|||
 *
 | 
			
		||||
 * Return: True if a frame was freed, else false.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef CONFIG_MIPS_FP_SUPPORT
 | 
			
		||||
extern bool dsemul_thread_cleanup(struct task_struct *tsk);
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
static inline bool dsemul_thread_cleanup(struct task_struct *tsk)
 | 
			
		||||
{
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
/**
 | 
			
		||||
 * dsemul_thread_rollback() - Rollback from an 'emulation' frame
 | 
			
		||||
 * @regs:	User thread register context.
 | 
			
		||||
| 
						 | 
				
			
			@ -77,7 +90,14 @@ extern bool dsemul_thread_cleanup(struct task_struct *tsk);
 | 
			
		|||
 *
 | 
			
		||||
 * Return: True if a frame was exited, else false.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef CONFIG_MIPS_FP_SUPPORT
 | 
			
		||||
extern bool dsemul_thread_rollback(struct pt_regs *regs);
 | 
			
		||||
#else
 | 
			
		||||
static inline bool dsemul_thread_rollback(struct pt_regs *regs)
 | 
			
		||||
{
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * dsemul_mm_cleanup() - Cleanup per-mm delay slot 'emulation' state
 | 
			
		||||
| 
						 | 
				
			
			@ -87,6 +107,13 @@ extern bool dsemul_thread_rollback(struct pt_regs *regs);
 | 
			
		|||
 * for delay slot 'emulation' book-keeping is freed. This is to be called
 | 
			
		||||
 * before @mm is freed in order to avoid memory leaks.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef CONFIG_MIPS_FP_SUPPORT
 | 
			
		||||
extern void dsemul_mm_cleanup(struct mm_struct *mm);
 | 
			
		||||
#else
 | 
			
		||||
static inline void dsemul_mm_cleanup(struct mm_struct *mm)
 | 
			
		||||
{
 | 
			
		||||
	/* no-op */
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif /* __MIPS_ASM_DSEMUL_H__ */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue