155 lines
2.1 KiB
C
155 lines
2.1 KiB
C
#include "ui/ui_basic.h"
|
|
#include "ui/ui_type.h"
|
|
|
|
#define SET32(x) *d32 = x; d32++;
|
|
|
|
AT_UI_SIM_RAM
|
|
void _memset(void *dst, u8 v, u32 len)
|
|
{
|
|
#if 1
|
|
memset(dst, v, len);
|
|
#else
|
|
u8 *d8 = (u8 *) dst;
|
|
u32 d_align = (u32) d8 & ALIGN_MASK;
|
|
|
|
memset(dst, v, len);
|
|
return;
|
|
|
|
if (d_align) {
|
|
d_align = ALIGN_MASK + 1 - d_align;
|
|
while (d_align && len) {
|
|
*d8 = v;
|
|
d8++;
|
|
len--;
|
|
d_align--;
|
|
}
|
|
}
|
|
|
|
u32 v32 = v + (v << 8) + (v << 16) + (v << 24);
|
|
u32 *d32 = (u32 *)d8;
|
|
|
|
while (len > 32) {
|
|
SET32(v32);
|
|
SET32(v32);
|
|
SET32(v32);
|
|
SET32(v32);
|
|
SET32(v32);
|
|
SET32(v32);
|
|
SET32(v32);
|
|
SET32(v32);
|
|
len -= 32;
|
|
}
|
|
|
|
while (len > 4) {
|
|
SET32(v32);
|
|
len -= 4;
|
|
}
|
|
|
|
|
|
d8 = (u8 *)d32;
|
|
while (len) {
|
|
*d8 = v;
|
|
d8++;
|
|
len--;
|
|
}
|
|
#endif // 1
|
|
}
|
|
AT_UI_SIM_RAM
|
|
void _memset_ff(void *dst, u32 len)
|
|
{
|
|
#if 1
|
|
memset(dst, 0xff, len);
|
|
#else
|
|
u8 *d8 = (u8 *) dst;
|
|
u32 d_align = (u32) d8 & ALIGN_MASK;
|
|
|
|
memset(dst, 0xff, len);
|
|
|
|
if (d_align) {
|
|
d_align = ALIGN_MASK + 1 - d_align;
|
|
while (d_align && len) {
|
|
*d8 = 0xFF;
|
|
d8++;
|
|
len--;
|
|
d_align--;
|
|
}
|
|
}
|
|
|
|
u32 *d32 = (u32 *)d8;
|
|
while (len > 32) {
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
SET32(0xFFFFFFFF);
|
|
len -= 32;
|
|
}
|
|
|
|
while (len > 4) {
|
|
SET32(0xFFFFFFFF);
|
|
len -= 4;
|
|
}
|
|
|
|
|
|
d8 = (u8 *)d32;
|
|
while (len) {
|
|
*d8 = 0xFF;
|
|
d8++;
|
|
len--;
|
|
}
|
|
#endif // 1
|
|
}
|
|
|
|
AT_UI_SIM_RAM
|
|
void _memset_00(void *dst, u32 len)
|
|
{
|
|
#if 1
|
|
memset(dst, 0, len);
|
|
#else
|
|
u8 *d8 = (u8 *) dst;
|
|
u32 d_align = (u32) d8 & ALIGN_MASK;
|
|
|
|
memset(dst, 0x00, len);
|
|
return;
|
|
|
|
if (d_align) {
|
|
d_align = ALIGN_MASK + 1 - d_align;
|
|
while (d_align && len) {
|
|
*d8 = 0x00;
|
|
d8++;
|
|
len--;
|
|
d_align--;
|
|
}
|
|
}
|
|
|
|
u32 *d32 = (u32 *)d8;
|
|
while (len > 32) {
|
|
SET32(0);
|
|
SET32(0);
|
|
SET32(0);
|
|
SET32(0);
|
|
SET32(0);
|
|
SET32(0);
|
|
SET32(0);
|
|
SET32(0);
|
|
len -= 32;
|
|
}
|
|
|
|
while (len > 4) {
|
|
SET32(0);
|
|
len -= 4;
|
|
}
|
|
|
|
d8 = (u8 *)d32;
|
|
while (len) {
|
|
*d8 = 0;
|
|
d8++;
|
|
len--;
|
|
}
|
|
#endif // 1
|
|
}
|
|
|