Prepare new maemo release
[maemo-rb.git] / apps / plugins / fractals / cpu_coldfire.h
blob9be207ee2f7e9b08c2d4ae0c5e4f12f8feb172ac
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2009 Tomer Shalev
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
22 #ifndef _CPU_COLDFIRE_H
23 #define _CPU_COLDFIRE_H
25 inline static short muls16_asr10(short a, short b)
27 asm (
28 "muls.w %[a],%[b] \n"
29 "asr.l #8,%[b] \n"
30 "asr.l #2,%[b] \n"
31 : /* outputs */
32 [b]"+d"(b)
33 : /* inputs */
34 [a]"d" (a)
36 return b;
39 inline static long muls32_asr26(long a, long b)
41 long r, t1;
42 asm (
43 "mac.l %[a], %[b], %%acc0 \n" /* multiply */
44 "move.l %%accext01, %[t1] \n" /* get low part */
45 "movclr.l %%acc0, %[r] \n" /* get high part */
46 "asl.l #5, %[r] \n" /* hi <<= 5, plus one free */
47 "lsr.l #3, %[t1] \n" /* lo >>= 3 */
48 "and.l #0x1f, %[t1] \n" /* mask out unrelated bits */
49 "or.l %[t1], %[r] \n" /* combine result */
50 : /* outputs */
51 [r] "=d"(r),
52 [t1]"=d"(t1)
53 : /* inputs */
54 [a] "d" (a),
55 [b] "d" (b)
57 return r;
60 #endif