diff options
Diffstat (limited to 'c/src/lib/libcpu/m68k/m68040/fpsp/x_bsun.S')
-rw-r--r-- | c/src/lib/libcpu/m68k/m68040/fpsp/x_bsun.S | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/c/src/lib/libcpu/m68k/m68040/fpsp/x_bsun.S b/c/src/lib/libcpu/m68k/m68040/fpsp/x_bsun.S new file mode 100644 index 0000000000..51a6d74d19 --- /dev/null +++ b/c/src/lib/libcpu/m68k/m68040/fpsp/x_bsun.S @@ -0,0 +1,49 @@ +// +// $Id$ +// +// x_bsun.sa 3.3 7/1/91 +// +// fpsp_bsun --- FPSP handler for branch/set on unordered exception +// +// Copy the PC to FPIAR to maintain 881/882 compatibility +// +// The real_bsun handler will need to perform further corrective +// measures as outlined in the 040 User's Manual on pages +// 9-41f, section 9.8.3. +// + +// Copyright (C) Motorola, Inc. 1990 +// All Rights Reserved +// +// THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF MOTOROLA +// The copyright notice above does not evidence any +// actual or intended publication of such source code. + +X_BSUN: //idnt 2,1 | Motorola 040 Floating Point Software Package + + |section 8 + +#include "fpsp.defs" + + |xref real_bsun + + .global fpsp_bsun +fpsp_bsun: +// + link %a6,#-LOCAL_SIZE + fsave -(%a7) + moveml %d0-%d1/%a0-%a1,USER_DA(%a6) + fmovemx %fp0-%fp3,USER_FP0(%a6) + fmoveml %fpcr/%fpsr/%fpiar,USER_FPCR(%a6) + +// + movel EXC_PC(%a6),USER_FPIAR(%a6) +// + moveml USER_DA(%a6),%d0-%d1/%a0-%a1 + fmovemx USER_FP0(%a6),%fp0-%fp3 + fmoveml USER_FPCR(%a6),%fpcr/%fpsr/%fpiar + frestore (%a7)+ + unlk %a6 + bral real_bsun +// + |end |