cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

fpu_proto.h (5980B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef _FPU_PROTO_H
      3#define _FPU_PROTO_H
      4
      5/* errors.c */
      6extern void FPU_illegal(void);
      7extern void FPU_printall(void);
      8asmlinkage void FPU_exception(int n);
      9extern int real_1op_NaN(FPU_REG *a);
     10extern int real_2op_NaN(FPU_REG const *b, u_char tagb, int deststnr,
     11			FPU_REG const *defaultNaN);
     12asmlinkage int arith_invalid(int deststnr);
     13asmlinkage int FPU_divide_by_zero(int deststnr, u_char sign);
     14extern int set_precision_flag(int flags);
     15asmlinkage void set_precision_flag_up(void);
     16asmlinkage void set_precision_flag_down(void);
     17asmlinkage int denormal_operand(void);
     18asmlinkage int arith_overflow(FPU_REG *dest);
     19asmlinkage int arith_underflow(FPU_REG *dest);
     20extern void FPU_stack_overflow(void);
     21extern void FPU_stack_underflow(void);
     22extern void FPU_stack_underflow_i(int i);
     23extern void FPU_stack_underflow_pop(int i);
     24/* fpu_arith.c */
     25extern void fadd__(void);
     26extern void fmul__(void);
     27extern void fsub__(void);
     28extern void fsubr_(void);
     29extern void fdiv__(void);
     30extern void fdivr_(void);
     31extern void fadd_i(void);
     32extern void fmul_i(void);
     33extern void fsubri(void);
     34extern void fsub_i(void);
     35extern void fdivri(void);
     36extern void fdiv_i(void);
     37extern void faddp_(void);
     38extern void fmulp_(void);
     39extern void fsubrp(void);
     40extern void fsubp_(void);
     41extern void fdivrp(void);
     42extern void fdivp_(void);
     43/* fpu_aux.c */
     44extern void finit(void);
     45extern void finit_(void);
     46extern void fstsw_(void);
     47extern void fp_nop(void);
     48extern void fld_i_(void);
     49extern void fxch_i(void);
     50extern void fcmovb(void);
     51extern void fcmove(void);
     52extern void fcmovbe(void);
     53extern void fcmovu(void);
     54extern void fcmovnb(void);
     55extern void fcmovne(void);
     56extern void fcmovnbe(void);
     57extern void fcmovnu(void);
     58extern void ffree_(void);
     59extern void ffreep(void);
     60extern void fst_i_(void);
     61extern void fstp_i(void);
     62/* fpu_entry.c */
     63extern void math_emulate(struct math_emu_info *info);
     64extern void math_abort(struct math_emu_info *info, unsigned int signal);
     65/* fpu_etc.c */
     66extern void FPU_etc(void);
     67/* fpu_tags.c */
     68extern int FPU_gettag0(void);
     69extern int FPU_gettagi(int stnr);
     70extern int FPU_gettag(int regnr);
     71extern void FPU_settag0(int tag);
     72extern void FPU_settagi(int stnr, int tag);
     73extern void FPU_settag(int regnr, int tag);
     74extern int FPU_Special(FPU_REG const *ptr);
     75extern int isNaN(FPU_REG const *ptr);
     76extern void FPU_pop(void);
     77extern int FPU_empty_i(int stnr);
     78extern int FPU_stackoverflow(FPU_REG ** st_new_ptr);
     79extern void FPU_copy_to_regi(FPU_REG const *r, u_char tag, int stnr);
     80extern void FPU_copy_to_reg1(FPU_REG const *r, u_char tag);
     81extern void FPU_copy_to_reg0(FPU_REG const *r, u_char tag);
     82/* fpu_trig.c */
     83extern void FPU_triga(void);
     84extern void FPU_trigb(void);
     85/* get_address.c */
     86extern void __user *FPU_get_address(u_char FPU_modrm, unsigned long *fpu_eip,
     87				    struct address *addr,
     88				    fpu_addr_modes addr_modes);
     89extern void __user *FPU_get_address_16(u_char FPU_modrm, unsigned long *fpu_eip,
     90				       struct address *addr,
     91				       fpu_addr_modes addr_modes);
     92/* load_store.c */
     93extern int FPU_load_store(u_char type, fpu_addr_modes addr_modes,
     94			  void __user * data_address);
     95/* poly_2xm1.c */
     96extern int poly_2xm1(u_char sign, FPU_REG * arg, FPU_REG *result);
     97/* poly_atan.c */
     98extern void poly_atan(FPU_REG * st0_ptr, u_char st0_tag, FPU_REG *st1_ptr,
     99		      u_char st1_tag);
    100/* poly_l2.c */
    101extern void poly_l2(FPU_REG *st0_ptr, FPU_REG *st1_ptr, u_char st1_sign);
    102extern int poly_l2p1(u_char s0, u_char s1, FPU_REG *r0, FPU_REG *r1,
    103		     FPU_REG * d);
    104/* poly_sin.c */
    105extern void poly_sine(FPU_REG *st0_ptr);
    106extern void poly_cos(FPU_REG *st0_ptr);
    107/* poly_tan.c */
    108extern void poly_tan(FPU_REG *st0_ptr);
    109/* reg_add_sub.c */
    110extern int FPU_add(FPU_REG const *b, u_char tagb, int destrnr, int control_w);
    111extern int FPU_sub(int flags, int rm, int control_w);
    112/* reg_compare.c */
    113extern int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag);
    114extern void fcom_st(void);
    115extern void fcompst(void);
    116extern void fcompp(void);
    117extern void fucom_(void);
    118extern void fucomp(void);
    119extern void fucompp(void);
    120extern void fcomi_(void);
    121extern void fcomip(void);
    122extern void fucomi_(void);
    123extern void fucomip(void);
    124/* reg_constant.c */
    125extern void fconst(void);
    126/* reg_ld_str.c */
    127extern int FPU_load_extended(long double __user *s, int stnr);
    128extern int FPU_load_double(double __user *dfloat, FPU_REG *loaded_data);
    129extern int FPU_load_single(float __user *single, FPU_REG *loaded_data);
    130extern int FPU_load_int64(long long __user *_s);
    131extern int FPU_load_int32(long __user *_s, FPU_REG *loaded_data);
    132extern int FPU_load_int16(short __user *_s, FPU_REG *loaded_data);
    133extern int FPU_load_bcd(u_char __user *s);
    134extern int FPU_store_extended(FPU_REG *st0_ptr, u_char st0_tag,
    135			      long double __user * d);
    136extern int FPU_store_double(FPU_REG *st0_ptr, u_char st0_tag,
    137			    double __user * dfloat);
    138extern int FPU_store_single(FPU_REG *st0_ptr, u_char st0_tag,
    139			    float __user * single);
    140extern int FPU_store_int64(FPU_REG *st0_ptr, u_char st0_tag,
    141			   long long __user * d);
    142extern int FPU_store_int32(FPU_REG *st0_ptr, u_char st0_tag, long __user *d);
    143extern int FPU_store_int16(FPU_REG *st0_ptr, u_char st0_tag, short __user *d);
    144extern int FPU_store_bcd(FPU_REG *st0_ptr, u_char st0_tag, u_char __user *d);
    145extern int FPU_round_to_int(FPU_REG *r, u_char tag);
    146extern u_char __user *fldenv(fpu_addr_modes addr_modes, u_char __user *s);
    147extern void FPU_frstor(fpu_addr_modes addr_modes, u_char __user *data_address);
    148extern u_char __user *fstenv(fpu_addr_modes addr_modes, u_char __user *d);
    149extern void fsave(fpu_addr_modes addr_modes, u_char __user *data_address);
    150extern int FPU_tagof(FPU_REG *ptr);
    151/* reg_mul.c */
    152extern int FPU_mul(FPU_REG const *b, u_char tagb, int deststnr, int control_w);
    153
    154extern int FPU_div(int flags, int regrm, int control_w);
    155/* reg_convert.c */
    156extern int FPU_to_exp16(FPU_REG const *a, FPU_REG *x);
    157#endif /* _FPU_PROTO_H */