/*
 * This file is part of GNU CC.
 *
 * GNU CC is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published
 * by the Free Software Foundation; either version 2, or (at your
 * option) any later version.
 *
 * GNU CC is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public
 * License along with GNU CC; see the file COPYING.  If not, write
 * to the Free Software Foundation, 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */


#include <common.h>

#if !defined(CFG_NIOS_MULT_HW) && !defined(CFG_NIOS_MULT_MSTEP)

#include "math.h"

USItype __mulsi3 (USItype a, USItype b)
{
	USItype c = 0;

	while (a != 0) {
		if (a & 1)
			c += b;
		a >>= 1;
		b <<= 1;
	}

	return c;
}


UHItype __mulhi3 (UHItype a, UHItype b)
{
	UHItype c = 0;

	while (a != 0) {
		if (a & 1)
			c += b;
		a >>= 1;
		b <<= 1;
	}

	return c;
}

#endif /*!defined(CFG_NIOS_MULT_HW) && !defined(CFG_NIOS_MULT_MSTEP) */
