NAND Boot: fix an invalid PC error caused by div operation.
[u-boot-openmoko/mini2440.git] / lib_nios2 / mult.c
blob66bb64d0c18b8a0a5f178bee061845192b6747dd
1 /*
2 * This file is part of GNU CC.
4 * GNU CC is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published
6 * by the Free Software Foundation; either version 2, or (at your
7 * option) any later version.
9 * GNU CC 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
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public
15 * License along with GNU CC; see the file COPYING. If not, write
16 * to the Free Software Foundation, 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
21 #include <common.h>
23 #if !defined(CFG_NIOS_MULT_HW) && !defined(CFG_NIOS_MULT_MSTEP)
25 #include "math.h"
27 USItype __mulsi3 (USItype a, USItype b)
29 USItype c = 0;
31 while (a != 0) {
32 if (a & 1)
33 c += b;
34 a >>= 1;
35 b <<= 1;
38 return c;
42 UHItype __mulhi3 (UHItype a, UHItype b)
44 UHItype c = 0;
46 while (a != 0) {
47 if (a & 1)
48 c += b;
49 a >>= 1;
50 b <<= 1;
53 return c;
56 #endif /*!defined(CFG_NIOS_MULT_HW) && !defined(CFG_NIOS_MULT_MSTEP) */