cregit-Linux how code gets into the kernel

Release 4.14 arch/mn10300/include/asm/fpu.h

/* MN10300 FPU definitions
 *
 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
 * Written by David Howells (dhowells@redhat.com)
 * Derived from include/asm-i386/i387.h: Copyright (C) 1994 Linus Torvalds
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public Licence
 * as published by the Free Software Foundation; either version
 * 2 of the Licence, or (at your option) any later version.
 */
#ifndef _ASM_FPU_H

#define _ASM_FPU_H

#ifndef __ASSEMBLY__

#include <linux/sched.h>
#include <asm/exceptions.h>
#include <asm/sigcontext.h>

#ifdef __KERNEL__

extern asmlinkage void fpu_disabled(void);

#ifdef CONFIG_FPU

#ifdef CONFIG_LAZY_SAVE_FPU
/* the task that currently owns the FPU state */
extern struct task_struct *fpu_state_owner;
#endif

#if (THREAD_USING_FPU & ~0xff)
#error THREAD_USING_FPU must be smaller than 0x100.
#endif


static inline void set_using_fpu(struct task_struct *tsk) { asm volatile( "bset %0,(0,%1)" : : "i"(THREAD_USING_FPU), "a"(&tsk->thread.fpu_flags) : "memory", "cc"); }

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi1173.33%150.00%
David Howells426.67%150.00%
Total15100.00%2100.00%


static inline void clear_using_fpu(struct task_struct *tsk) { asm volatile( "bclr %0,(0,%1)" : : "i"(THREAD_USING_FPU), "a"(&tsk->thread.fpu_flags) : "memory", "cc"); }

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi1173.33%150.00%
David Howells426.67%150.00%
Total15100.00%2100.00%

#define is_using_fpu(tsk) ((tsk)->thread.fpu_flags & THREAD_USING_FPU) extern asmlinkage void fpu_kill_state(struct task_struct *); extern asmlinkage void fpu_exception(struct pt_regs *, enum exception_code); extern asmlinkage void fpu_init_state(void); extern asmlinkage void fpu_save(struct fpu_state_struct *); extern int fpu_setup_sigcontext(struct fpucontext *buf); extern int fpu_restore_sigcontext(struct fpucontext *buf);
static inline void unlazy_fpu(struct task_struct *tsk) { preempt_disable(); #ifndef CONFIG_LAZY_SAVE_FPU if (tsk->thread.fpu_flags & THREAD_HAS_FPU) { fpu_save(&tsk->thread.fpu_state); tsk->thread.fpu_flags &= ~THREAD_HAS_FPU; tsk->thread.uregs->epsw &= ~EPSW_FE; } #else if (fpu_state_owner == tsk) fpu_save(&tsk->thread.fpu_state); #endif preempt_enable(); }

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi83100.00%1100.00%
Total83100.00%1100.00%


static inline void exit_fpu(struct task_struct *tsk) { #ifdef CONFIG_LAZY_SAVE_FPU preempt_disable(); if (fpu_state_owner == tsk) fpu_state_owner = NULL; preempt_enable(); #endif }

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi2987.88%150.00%
Jiri Slaby412.12%150.00%
Total33100.00%2100.00%


static inline void flush_fpu(void) { struct task_struct *tsk = current; preempt_disable(); #ifndef CONFIG_LAZY_SAVE_FPU if (tsk->thread.fpu_flags & THREAD_HAS_FPU) { tsk->thread.fpu_flags &= ~THREAD_HAS_FPU; tsk->thread.uregs->epsw &= ~EPSW_FE; } #else if (fpu_state_owner == tsk) { fpu_state_owner = NULL; tsk->thread.uregs->epsw &= ~EPSW_FE; } #endif preempt_enable(); clear_using_fpu(tsk); }

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi89100.00%1100.00%
Total89100.00%1100.00%

#else /* CONFIG_FPU */ extern asmlinkage void unexpected_fpu_exception(struct pt_regs *, enum exception_code); #define fpu_exception unexpected_fpu_exception struct task_struct; struct fpu_state_struct;
static inline bool is_using_fpu(struct task_struct *tsk) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi1386.67%150.00%
David Howells213.33%150.00%
Total15100.00%2100.00%


static inline void set_using_fpu(struct task_struct *tsk) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi11100.00%1100.00%
Total11100.00%1100.00%


static inline void clear_using_fpu(struct task_struct *tsk) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi11100.00%1100.00%
Total11100.00%1100.00%


static inline void fpu_init_state(void) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi8100.00%1100.00%
Total8100.00%1100.00%


static inline void fpu_save(struct fpu_state_struct *s) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi11100.00%1100.00%
Total11100.00%1100.00%


static inline void fpu_kill_state(struct task_struct *tsk) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi11100.00%1100.00%
Total11100.00%1100.00%


static inline void unlazy_fpu(struct task_struct *tsk) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi11100.00%1100.00%
Total11100.00%1100.00%


static inline void exit_fpu(struct task_struct *tsk) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi763.64%150.00%
Jiri Slaby436.36%150.00%
Total11100.00%2100.00%


static inline void flush_fpu(void) {}

Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi8100.00%1100.00%
Total8100.00%1100.00%


static inline int fpu_setup_sigcontext(struct fpucontext *buf) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
David Howells853.33%150.00%
Akira Takeuchi746.67%150.00%
Total15100.00%2100.00%


static inline int fpu_restore_sigcontext(struct fpucontext *buf) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
David Howells853.33%150.00%
Akira Takeuchi746.67%150.00%
Total15100.00%2100.00%

#endif /* CONFIG_FPU */ #endif /* __KERNEL__ */ #endif /* !__ASSEMBLY__ */ #endif /* _ASM_FPU_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Akira Takeuchi41278.33%133.33%
David Howells10620.15%133.33%
Jiri Slaby81.52%133.33%
Total526100.00%3100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.