Lines Matching refs:fp

59 fp_prsave(kfpu_t *fp)
61 if ((fp->fpu_en) || (fp->fpu_fprs & FPRS_FEF)) {
64 fp->fpu_fprs = _fp_read_fprs();
65 if ((fp->fpu_fprs & FPRS_FEF) != FPRS_FEF) {
69 fp->fpu_fprs = fprs;
73 "fp_prsave with fp disabled!");
76 fp_fksave(fp);
120 * fp context belongs to a thread on deathrow
125 * fp context belongs to the current thread
130 fp_free(kfpu_t *fp, int isexec)
135 if (curthread->t_lwp != NULL && lwptofpu(curthread->t_lwp) == fp) {
136 fp->fpu_en = 0;
137 fp->fpu_fprs = fprs;
145 #ifdef SF_ERRATA_30 /* call causes fp-disabled */
154 kfpu_t *fp;
158 fp = lwptofpu(lwp);
161 if (fp->fpu_en) {
167 if ((fp->fpu_fprs & FPRS_FEF) != FPRS_FEF) {
168 fp->fpu_fprs = FPRS_FEF;
176 fp_restore(fp);
178 fp->fpu_en = 1;
179 fp->fpu_fsr = 0;
180 fp->fpu_fprs = FPRS_FEF;
182 fp_clearregs(fp);
187 if (!fp->fpu_en) {
188 fp->fpu_en = 1;
189 fp->fpu_fsr = 0;
191 fp->fpu_fr.fpu_regs[i] = (uint_t)-1; /* NaN */
193 fp->fpu_fr.fpu_dregs[i] = (uint64_t)-1;
211 kfpu_t *fp;
214 #ifdef SF_ERRATA_30 /* call causes fp-disabled */
235 #endif /* SF_ERRATA_30 - call causes fp-disabled */
239 * UltraSPARC III will report spurious fp-disabled exceptions when
250 fp = lwptofpu(lwp);
253 if (fp->fpu_en) {
259 if ((fp->fpu_fprs & FPRS_FEF) != FPRS_FEF) {
260 fp->fpu_fprs = FPRS_FEF;
268 fp_restore(fp);
270 fp->fpu_en = 1;
271 fp->fpu_fsr = 0;
272 fp->fpu_fprs = FPRS_FEF;
274 fp_clearregs(fp);
282 if (!fp->fpu_en) {
283 fp->fpu_en = 1;
284 fp->fpu_fsr = 0;
286 fp->fpu_fr.fpu_regs[i] = (uint_t)-1; /* NaN */
288 fp->fpu_fr.fpu_dregs[i] = (uint64_t)-1;
291 rp, (ulong_t *)rp->r_sp, fp)) {
292 fp->fpu_q_entrysize = sizeof (struct _fpq);
320 kfpu_t *fp = lwptofpu(curthread->t_lwp);
321 struct _fq *fqp = fp->fpu_q;
323 uint64_t gsr = get_gsr(fp);
330 while (fp->fpu_qcnt) {
335 (fsr_type *)&fp->fpu_fsr, gsr,
344 if (fqp != fp->fpu_q) {
354 fqdp = fp->fpu_q;
355 for (i = fp->fpu_qcnt; i; i--) {
358 fqp = fp->fpu_q;
360 fp->fpu_q_entrysize = sizeof (struct _fpq);
363 * fpu_simulator uses the fp registers directly but it
369 _fp_write_pfsr(&fp->fpu_fsr);
376 * If there are other instructions in the fp queue
382 fp->fpu_qcnt--;
387 * fpu_simulator uses the fp registers directly, so we have
395 _fp_read_pfreg(&fp->fpu_fr.fpu_regs[i], i);
397 _fp_read_pdreg(&fp->fpu_fr.fpu_dregs[i], i);
398 _fp_write_pfsr(&fp->fpu_fsr);
423 kfpu_t *fp = lwptofpu(lwp);
427 save_gsr(fp);
428 gsr = get_gsr(fp);
432 * Note that the kernel is NOT prepared to handle a kernel fp
433 * exception if it can't pass successfully through the fp simulator.
458 * to fake a deferred fp trap. We now run the fp simulator
463 * generic "how do I connect the "fp queue to the pc/npc"
465 * problem for a restorecontext of a v8 fp queue on a
468 struct _fpq *pfpq = &fp->fpu_q->FQu.fpq;
474 fp->fpu_qcnt = 1;
475 fp->fpu_q_entrysize = sizeof (struct _fpq);
481 (fsr_type *)&fp->fpu_fsr, gsr, kluge.i);
483 /* update the hardware fp fsr state for sake of ucontext */
485 _fp_write_pfsr(&fp->fpu_fsr);
490 fp->fpu_qcnt = 0;
497 fp->fpu_qcnt = 0;
500 fp->fpu_qcnt = 0;
502 /* update the software pcb copies of hardware fp registers */
504 fp_save(fp);