00001 /* 00002 * mulsi3.c 00003 * 00004 * Wrapper for ROM mulsi3 routine, a 32-bit multiply: r0r1 *= r2r3 00005 * 00006 * The contents of this file are subject to the Mozilla Public License 00007 * Version 1.0 (the "License"); you may not use this file except in 00008 * compliance with the License. You may obtain a copy of the License at 00009 * http://www.mozilla.org/MPL/ 00010 * 00011 * Software distributed under the License is distributed on an "AS IS" 00012 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the 00013 * License for the specific language governing rights and limitations 00014 * under the License. 00015 * 00016 * The Original Code is Librcx code, released February 9, 1999. 00017 * 00018 * The Initial Developer of the Original Code is Kekoa Proudfoot. 00019 * Portions created by Kekoa Proudfoot are Copyright (C) 1999 00020 * Kekoa Proudfoot. All Rights Reserved. 00021 * 00022 * Contributor(s): Kekoa Proudfoot <kekoa@graphics.stanford.edu> 00023 */ 00024 00025 __asm__ ( 00026 ".section .text\n\t" 00027 ".global ___mulsi3\n" 00028 "___mulsi3:\n\t" 00029 "push r4\n\t" 00030 "push r5\n\t" 00031 "push r6\n\t" 00032 "mov.w r1,r6\n\t" 00033 "mov.w r0,r5\n\t" 00034 "mov.w r3,r4\n\t" 00035 "mov.w r2,r3\n\t" 00036 "jsr @@84\n\t" 00037 "mov.w r6,r1\n\t" 00038 "mov.w r5,r0\n\t" 00039 "pop r6\n\t" 00040 "pop r5\n\t" 00041 "pop r4\n\t" 00042 "rts" 00043 );