1/* Copyright (C) 1996-2022 Free Software Foundation, Inc. 2 This file is part of the GNU C Library. 3 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; either 7 version 2.1 of the License, or (at your option) any later version. 8 9 The GNU C Library is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public 15 License along with the GNU C Library. If not, see 16 <https://www.gnu.org/licenses/>. */ 17 18#include "div_libc.h" 19 20#undef FRAME 21#ifdef __alpha_fix__ 22#define FRAME 0 23#else 24#define FRAME 16 25#endif 26 27 .set noat 28 29 .align 4 30 .globl div 31 .ent div 32div: 33 .frame sp, FRAME, ra 34#if FRAME > 0 35 lda sp, -FRAME(sp) 36#endif 37#ifdef PROF 38 .set macro 39 ldgp gp, 0(pv) 40 lda AT, _mcount 41 jsr AT, (AT), _mcount 42 .set nomacro 43 .prologue 1 44#else 45 .prologue 0 46#endif 47 48 beq $18, $divbyzero 49 excb 50 mf_fpcr $f10 51 52 _ITOFT2 $17, $f0, 0, $18, $f1, 8 53 54 cvtqt $f0, $f0 55 cvtqt $f1, $f1 56 divt/c $f0, $f1, $f0 57 cvttq/c $f0, $f0 58 excb 59 mt_fpcr $f10 60 _FTOIT $f0, $0, 0 61 62 mull $0, $18, $1 63 subl $17, $1, $1 64 65 stl $0, 0(a0) 66 stl $1, 4(a0) 67 mov a0, v0 68 69#if FRAME > 0 70 lda sp, FRAME(sp) 71#endif 72 ret 73 74$divbyzero: 75 mov a0, v0 76 lda a0, GEN_INTDIV 77 call_pal PAL_gentrap 78 stl zero, 0(v0) 79 stl zero, 4(v0) 80 81#if FRAME > 0 82 lda sp, FRAME(sp) 83#endif 84 ret 85 86 .end div 87