9065476bd186ee20e0d3136aa92cc4b2b0c38404
[picodrive.git] / pico / misc.c
1 /*\r
2  * rarely used EEPROM code\r
3  * (C) notaz, 2006-2008\r
4  *\r
5  * This work is licensed under the terms of MAME license.\r
6  * See COPYING file in the top-level directory.\r
7  */\r
8 \r
9 #include "pico_int.h"\r
10 \r
11 \r
12 #ifndef _ASM_MISC_C\r
13 PICO_INTERNAL_ASM void memcpy16bswap(unsigned short *dest, void *src, int count)\r
14 {\r
15         unsigned char *src_ = src;\r
16 \r
17         for (; count; count--, src_ += 2)\r
18                 *dest++ = (src_[0] << 8) | src_[1];\r
19 }\r
20 \r
21 #ifndef _ASM_MISC_C_AMIPS\r
22 PICO_INTERNAL_ASM void memset32(void *dest_in, int c, int count)\r
23 {\r
24         int *dest = dest_in;\r
25 \r
26         for (; count >= 8; count -= 8, dest += 8)\r
27                 dest[0] = dest[1] = dest[2] = dest[3] =\r
28                 dest[4] = dest[5] = dest[6] = dest[7] = c;\r
29 \r
30         switch (count) {\r
31                 case 7: *dest++ = c;\r
32                 case 6: *dest++ = c;\r
33                 case 5: *dest++ = c;\r
34                 case 4: *dest++ = c;\r
35                 case 3: *dest++ = c;\r
36                 case 2: *dest++ = c;\r
37                 case 1: *dest++ = c;\r
38         }\r
39 }\r
40 void memset32_uncached(int *dest, int c, int count) { memset32(dest, c, count); }\r
41 #endif\r
42 #endif\r
43 \r