1*0a6a1f1dSLionel Sambuc/* $NetBSD: fpsetmask.S,v 1.7 2014/01/23 00:00:16 joerg Exp $ */ 22fe8fb19SBen Gras 384d9c625SLionel Sambuc/*- 484d9c625SLionel Sambuc * Copyright (c) 2013 The NetBSD Foundation, Inc. 52fe8fb19SBen Gras * All rights reserved. 62fe8fb19SBen Gras * 784d9c625SLionel Sambuc * This code is derived from software contributed to The NetBSD Foundation 884d9c625SLionel Sambuc * by Matt Thomas of 3am Software Foundry. 984d9c625SLionel Sambuc * 102fe8fb19SBen Gras * Redistribution and use in source and binary forms, with or without 112fe8fb19SBen Gras * modification, are permitted provided that the following conditions 122fe8fb19SBen Gras * are met: 132fe8fb19SBen Gras * 1. Redistributions of source code must retain the above copyright 142fe8fb19SBen Gras * notice, this list of conditions and the following disclaimer. 152fe8fb19SBen Gras * 2. Redistributions in binary form must reproduce the above copyright 162fe8fb19SBen Gras * notice, this list of conditions and the following disclaimer in the 172fe8fb19SBen Gras * documentation and/or other materials provided with the distribution. 182fe8fb19SBen Gras * 1984d9c625SLionel Sambuc * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 2084d9c625SLionel Sambuc * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 2184d9c625SLionel Sambuc * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2284d9c625SLionel Sambuc * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 2384d9c625SLionel Sambuc * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 2484d9c625SLionel Sambuc * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 2584d9c625SLionel Sambuc * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 2684d9c625SLionel Sambuc * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 2784d9c625SLionel Sambuc * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 2884d9c625SLionel Sambuc * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 2984d9c625SLionel Sambuc * POSSIBILITY OF SUCH DAMAGE. 302fe8fb19SBen Gras */ 312fe8fb19SBen Gras 3284d9c625SLionel Sambuc#ifndef __VFP_FP__ 3384d9c625SLionel Sambuc#error FPA is not supported anymore 3484d9c625SLionel Sambuc#endif 3584d9c625SLionel Sambuc 3684d9c625SLionel Sambuc#include <arm/asm.h> 3784d9c625SLionel Sambuc#include <arm/vfpreg.h> 382fe8fb19SBen Gras 392fe8fb19SBen Gras/* 402fe8fb19SBen Gras * Set the current FP exception enable mask 412fe8fb19SBen Gras */ 422fe8fb19SBen Gras 432fe8fb19SBen Gras#ifdef WEAK_ALIAS 442fe8fb19SBen GrasWEAK_ALIAS(fpsetmask, _fpsetmask) 4584d9c625SLionel Sambuc#define fpsetmask _fpsetmask 4684d9c625SLionel Sambuc#endif 4784d9c625SLionel Sambuc 482fe8fb19SBen GrasENTRY(fpsetmask) 4984d9c625SLionel Sambuc and r2, r0, #VFP_FPSCR_CSUM 5084d9c625SLionel Sambuc vmrs r1, fpscr 5184d9c625SLionel Sambuc mov r0, r1, lsr #8 /* Return old mask */ 5284d9c625SLionel Sambuc bic r1, r1, #VFP_FPSCR_ESUM 5384d9c625SLionel Sambuc orr r1, r1, r2, lsl #8 5484d9c625SLionel Sambuc vmsr fpscr, r1 5584d9c625SLionel Sambuc and r0, r0, #VFP_FPSCR_CSUM 562fe8fb19SBen Gras RET 5784d9c625SLionel SambucEND(fpsetmask) 58