; //  A Squeak VM for RiscOS machines
; //  Suited to RISC OS > 4, preferably > 5
; // See www.squeak.org for much more information
; //
; // tim Rowledge tim@rowledge.org
; //
; // License: MIT License -
; // Copyright (C) <2013> <tim rowledge>
; //
; // Permission is hereby granted, free of charge, to any person obtaining a
; // copy of this software and associated documentation files (the "Software"),
; // to deal in the Software without restriction, including without limitation
; // the rights to use, copy, modify, merge, publish, distribute, sublicense,
; // and/or sell copies of the Software, and to permit persons to whom the
; // Software is furnished to do so, subject to the following conditions:
; //
; // The above copyright notice and this permission notice shall be included in
; //  all copies or substantial portions of the Software.
; //
; // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
; // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
; // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
; // DEALINGS IN THE SOFTWARE.

;/*                       fperrors.s                                       */
;/*  fudge the FPE status to get /0 errors properly                        */
;/**************************************************************************/

R0      RN      0
sp      RN      13
lk      RN      14
pc      RN      15


; Macro to provide labels in ASM code to suit C linker/debugger
        MACRO
$label  C_Label $string
        LCLA size
size SETA &FF000000 + (( (:LEN: "$string")  + 4 ) :AND: &FFFFFFFC)

$label DCB "$string",0
        ALIGN
        DCD  size
        MEND

;*****************************************************************

    AREA |C$$code|, CODE, READONLY

        EXPORT setFPStatus
        EXPORT readFPStatus

;*****************************************************************

        C_Label "setFPStatus"

setFPStatus
        WFS R0
        MOV pc, lk

;*****************************************************************
        C_Label "readFPStatus"
readFPStatus
        RFS R0
        AND R0, R0, #&F
        MOV pc, lk

    AREA |C$$data|

|x$dataseg|

        END
