mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
MIライブラリ追加。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@118 b871894f-2f95-9b40-918c-086798483c85
This commit is contained in:
parent
e7502950c1
commit
0501947d93
@ -245,6 +245,7 @@ ifeq ($(CODEGEN_PROC),ARM11)
|
|||||||
|
|
||||||
BROM_LIBS_BASE ?= \
|
BROM_LIBS_BASE ?= \
|
||||||
libos \
|
libos \
|
||||||
|
libmi \
|
||||||
|
|
||||||
ifdef BROM_PROFILE_TYPE
|
ifdef BROM_PROFILE_TYPE
|
||||||
BROM_LIBS_BASE += libos.$(BROM_PROFILE_TYPE)
|
BROM_LIBS_BASE += libos.$(BROM_PROFILE_TYPE)
|
||||||
@ -254,6 +255,7 @@ else # ($(CODEGEN_PROC),ARM9)
|
|||||||
|
|
||||||
BROM_LIBS_BASE ?= \
|
BROM_LIBS_BASE ?= \
|
||||||
libos_sp \
|
libos_sp \
|
||||||
|
libmi_sp \
|
||||||
|
|
||||||
ifdef BROM_PROFILE_TYPE
|
ifdef BROM_PROFILE_TYPE
|
||||||
BROM_LIBS_BASE += libos_sp.$(BROM_PROFILE_TYPE)
|
BROM_LIBS_BASE += libos_sp.$(BROM_PROFILE_TYPE)
|
||||||
|
|||||||
@ -23,6 +23,7 @@ include $(CTRBROM_ROOT)/build/buildtools/commondefs
|
|||||||
SUBDIRS = \
|
SUBDIRS = \
|
||||||
init \
|
init \
|
||||||
os \
|
os \
|
||||||
|
mi \
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|||||||
46
trunk/bootrom/build/libraries/mi/ARM11/Makefile
Normal file
46
trunk/bootrom/build/libraries/mi/ARM11/Makefile
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: CtrBrom - libraries - mi
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# Copyright 2008 Nintendo. All rights reserved.
|
||||||
|
#
|
||||||
|
# These coded instructions, statements, and computer programs contain
|
||||||
|
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
# Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
# not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
# in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
#
|
||||||
|
# $Date:: $
|
||||||
|
# $Rev$
|
||||||
|
# $Author$
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
SUBMAKES =
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
BROM_CODEGEN_ALL ?= TRUE
|
||||||
|
|
||||||
|
SRCDIR = . ../common
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
mi_memory.c \
|
||||||
|
|
||||||
|
TARGET_LIB = libmi$(BROM_LIBSUFFIX).a
|
||||||
|
|
||||||
|
include $(CTRBROM_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(BROM_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(CTRBROM_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
||||||
54
trunk/bootrom/build/libraries/mi/ARM9/Makefile
Normal file
54
trunk/bootrom/build/libraries/mi/ARM9/Makefile
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: TwlBrom - libraries_sp - mi
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# Copyright 2008 Nintendo. All rights reserved.
|
||||||
|
#
|
||||||
|
# These coded instructions, statements, and computer programs contain
|
||||||
|
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
# Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
# not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
# in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
#
|
||||||
|
# $Date:: $
|
||||||
|
# $Rev$
|
||||||
|
# $Author$
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS =
|
||||||
|
#SUBMAKES = Makefile.CALLTRACE \
|
||||||
|
# Makefile.FUNCTIONCOST
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
# build ARM & THUMB libraries
|
||||||
|
BROM_CODEGEN_ALL ?= TRUE
|
||||||
|
|
||||||
|
# Codegen for sub processer
|
||||||
|
BROM_PROC = ARM9
|
||||||
|
|
||||||
|
SRCDIR = . ../common
|
||||||
|
|
||||||
|
SRCS = \
|
||||||
|
mi_memory.c \
|
||||||
|
|
||||||
|
TARGET_LIB = libmi_sp$(BROM_LIBSUFFIX).a
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(CTRBROM_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
INSTALL_TARGETS = $(TARGETS)
|
||||||
|
INSTALL_DIR = $(BROM_INSTALL_LIBDIR)
|
||||||
|
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
do-build: $(TARGETS)
|
||||||
|
|
||||||
|
include $(CTRBROM_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
||||||
34
trunk/bootrom/build/libraries/mi/Makefile
Normal file
34
trunk/bootrom/build/libraries/mi/Makefile
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
#! make -f
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Project: CtrBrom - libraries - mi
|
||||||
|
# File: Makefile
|
||||||
|
#
|
||||||
|
# Copyright 2008 Nintendo. All rights reserved.
|
||||||
|
#
|
||||||
|
# These coded instructions, statements, and computer programs contain
|
||||||
|
# proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
# Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
# not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
# in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
#
|
||||||
|
# $Date:: $
|
||||||
|
# $Rev$
|
||||||
|
# $Author$
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(CTRBROM_ROOT)/build/buildtools/commondefs
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SUBDIRS = ARM11
|
||||||
|
|
||||||
|
#ifdef CTR_WITH_ARM9
|
||||||
|
SUBDIRS += ARM9
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(CTRBROM_ROOT)/build/buildtools/modulerules
|
||||||
|
|
||||||
|
|
||||||
|
#===== End of Makefile =====
|
||||||
805
trunk/bootrom/build/libraries/mi/common/mi_memory.c
Normal file
805
trunk/bootrom/build/libraries/mi/common/mi_memory.c
Normal file
@ -0,0 +1,805 @@
|
|||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Project: TwlBrom - MI
|
||||||
|
File: mi_memory.c
|
||||||
|
|
||||||
|
Copyright 2008 Nintendo. All rights reserved.
|
||||||
|
|
||||||
|
These coded instructions, statements, and computer programs contain
|
||||||
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
||||||
|
Company Ltd., and are protected by Federal copyright law. They may
|
||||||
|
not be disclosed to third parties or copied or duplicated in any form,
|
||||||
|
in whole or in part, without the prior written consent of Nintendo.
|
||||||
|
|
||||||
|
$Date:: $
|
||||||
|
$Rev$
|
||||||
|
$Author$
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#include <brom/types.h>
|
||||||
|
#include <brom/mi/memory.h>
|
||||||
|
|
||||||
|
//#define BROM_ENABLE_CONVINIENCE_COPY
|
||||||
|
|
||||||
|
|
||||||
|
//****バグ対策****
|
||||||
|
// CW のバグで、ldrh や strh といった、ハーフワードアクセス命令が
|
||||||
|
// inline assembler で通らないので、直に命令の値を dcd で書いて
|
||||||
|
// 回避する。バグがなおったら下のdefine は削除する。
|
||||||
|
|
||||||
|
// Fixed with CodeWarrior 0.4 or later
|
||||||
|
//#define CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
|
||||||
|
|
||||||
|
#define HALFW_CONDAL 0xe0000000 // condition(ALL)
|
||||||
|
#define HALFW_CONDNE 0x10000000 // condition(NE)
|
||||||
|
#define HALFW_CONDEQ 0x00000000 // condition(EQ)
|
||||||
|
|
||||||
|
#define HALFW_OFF_PL 0x00800000 // offset plus
|
||||||
|
#define HALFW_OFF_MI 0x00000000 // offset minus
|
||||||
|
#define HALFW_LOAD 0x00100000 // load
|
||||||
|
#define HALFW_STORE 0x00000000 // store
|
||||||
|
#define HALFW_RN(n) ((n)<<16) // register Rn
|
||||||
|
#define HALFW_RD(n) ((n)<<12) // register Rd
|
||||||
|
|
||||||
|
#define HALFW_DEF1 0x004000B0 // fixed
|
||||||
|
#define HALFW_DEF2 0x014000B0 // fixed
|
||||||
|
|
||||||
|
#define HALFW_IMM(n) ( ((n)&0xf) | (((n)&0xf0)<<4) ) // immediate
|
||||||
|
|
||||||
|
|
||||||
|
#define HALFW_DCD( cond, d, n, offset, sign, ldst, def ) \
|
||||||
|
dcd (def)|(cond)|(sign)|(ldst)|HALFW_RN(n)|HALFW_RD(d)|HALFW_IMM(offset)
|
||||||
|
|
||||||
|
//---- ldrh Rn, [Rd], +#offset
|
||||||
|
#define LDRH_AD1( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_PL, HALFW_LOAD, HALFW_DEF1 )
|
||||||
|
|
||||||
|
//---- ldrh Rn, [Rd, +#offset]
|
||||||
|
#define LDRH_AD2( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_PL, HALFW_LOAD, HALFW_DEF2 )
|
||||||
|
|
||||||
|
//---- ldrh Rn, [Rd], -#offset
|
||||||
|
#define LDRH_AD3( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_MI, HALFW_LOAD, HALFW_DEF1 )
|
||||||
|
|
||||||
|
//---- ldrh Rn, [Rd, -#offset]
|
||||||
|
#define LDRH_AD4( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_MI, HALFW_LOAD, HALFW_DEF2 )
|
||||||
|
|
||||||
|
//---- strh Rn, [Rd], +#offset
|
||||||
|
#define STRH_AD1( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_PL, HALFW_STORE, HALFW_DEF1 )
|
||||||
|
|
||||||
|
//---- strh Rn, [Rd, +#offset]
|
||||||
|
#define STRH_AD2( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_PL, HALFW_STORE, HALFW_DEF2 )
|
||||||
|
|
||||||
|
//---- strh Rn, [Rd], -#offset
|
||||||
|
#define STRH_AD3( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_MI, HALFW_STORE, HALFW_DEF1 )
|
||||||
|
|
||||||
|
//---- strh Rn, [Rd, -#offset]
|
||||||
|
#define STRH_AD4( cond, d, n, offset ) \
|
||||||
|
HALFW_DCD( cond, d, n, offset, HALFW_OFF_MI, HALFW_STORE, HALFW_DEF2 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <brom/code32.h>
|
||||||
|
//=======================================================================
|
||||||
|
// MEMORY OPERATIONS
|
||||||
|
//=======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuClear16
|
||||||
|
|
||||||
|
Description: fill memory with specified data.
|
||||||
|
16bit version
|
||||||
|
|
||||||
|
Arguments: data : fill data
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuClear16( register u16 data, register void* destp, register u32 size )
|
||||||
|
{
|
||||||
|
mov r3, #0 // n = 0
|
||||||
|
|
||||||
|
LSYM(0)
|
||||||
|
cmp r3, r2 // n < size ?
|
||||||
|
strlth r0, [r1, r3] // *((vu16 *)(destp + n)) = data
|
||||||
|
addlt r3, r3, #2 // n += 2
|
||||||
|
blt BSYM(0)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuCopy16
|
||||||
|
|
||||||
|
Description: copy memory by CPU
|
||||||
|
16bit version
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuCopy16( register const void *srcp, register void *destp, register u32 size )
|
||||||
|
{
|
||||||
|
mov r12, #0 // n = 0
|
||||||
|
|
||||||
|
LSYM(10)
|
||||||
|
cmp r12, r2 // n < size ?
|
||||||
|
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrlth r3, [r0, r12] // *((vu16 *)(destp + n)) = *((vu16 *)(srcp + n))
|
||||||
|
#else
|
||||||
|
dcd 0xb19030bc
|
||||||
|
#endif
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strlth r3, [r1, r12]
|
||||||
|
#else
|
||||||
|
dcd 0xb18130bc
|
||||||
|
#endif
|
||||||
|
addlt r12, r12, #2 // n += 2
|
||||||
|
blt BSYM(10)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuSend16
|
||||||
|
|
||||||
|
Description: send u16 data to fixed address
|
||||||
|
16bit version
|
||||||
|
|
||||||
|
Arguments: src : data stream to send
|
||||||
|
dest : destination address. not incremented
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuSend16( register const void *srcp, register volatile void* destp, register u32 size )
|
||||||
|
{
|
||||||
|
mov r12, #0 // n = 0
|
||||||
|
|
||||||
|
LSYM(11)
|
||||||
|
cmp r12, r2 // n < size ?
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrlth r3, [r0, r12] // *((vu16 *)(destp + n)) = *((vu16 *)(srcp + n))
|
||||||
|
#else
|
||||||
|
dcd 0xb19030bc
|
||||||
|
#endif
|
||||||
|
strlth r3, [r1, #0]
|
||||||
|
addlt r12, r12, #2 // n += 2
|
||||||
|
blt BSYM(11)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuClear32
|
||||||
|
|
||||||
|
Description: fill memory with specified data.
|
||||||
|
32bit version
|
||||||
|
|
||||||
|
Arguments: data : fill data
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuClear32( register u32 data, register void *destp, register u32 size )
|
||||||
|
{
|
||||||
|
add r12, r1, r2 // r12: destEndp = destp + size
|
||||||
|
|
||||||
|
LSYM(20)
|
||||||
|
cmp r1, r12 // while (destp < destEndp)
|
||||||
|
stmltia r1!, {r0} // *((vu32 *)(destp++)) = data
|
||||||
|
blt BSYM(20)
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuCopy32
|
||||||
|
|
||||||
|
Description: copy memory by CPU
|
||||||
|
32bit version
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuCopy32( register const void *srcp, register void *destp, register u32 size )
|
||||||
|
{
|
||||||
|
add r12, r1, r2 // r12: destEndp = destp + size
|
||||||
|
|
||||||
|
LSYM(30)
|
||||||
|
cmp r1, r12 // while (destp < destEndp)
|
||||||
|
ldmltia r0!, {r2} // *((vu32 *)(destp)++) = *((vu32 *)(srcp)++)
|
||||||
|
stmltia r1!, {r2}
|
||||||
|
blt BSYM(30)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuSend32
|
||||||
|
|
||||||
|
Description: send u32 data to fixed address
|
||||||
|
32bit version
|
||||||
|
|
||||||
|
Arguments: src : data stream to send
|
||||||
|
dest : destination address. not incremented
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuSend32( register const void *srcp, volatile void *destp, u32 size )
|
||||||
|
{
|
||||||
|
add r12, r0, r2 // r12: srcEndp = srcp + size
|
||||||
|
|
||||||
|
LSYM(31)
|
||||||
|
cmp r0, r12 // while (srcp < srcEndp)
|
||||||
|
ldmltia r0!, {r2} // *((vu32 *)(destp)) = *((vu32 *)(srcp)++)
|
||||||
|
strlt r2, [r1]
|
||||||
|
blt BSYM(31)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuClearFast
|
||||||
|
|
||||||
|
Description: fill memory with specified data.
|
||||||
|
high speed by writing 32byte at a time using stm
|
||||||
|
|
||||||
|
Arguments: data : fill data
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuClearFast( register u32 data, register void *destp, register u32 size )
|
||||||
|
{
|
||||||
|
stmfd sp!, {r4-r9}
|
||||||
|
|
||||||
|
add r9, r1, r2 // r9: destEndp = destp + size
|
||||||
|
mov r12, r2, lsr #5 // r12: destBlockEndp = destp + size/32*32
|
||||||
|
add r12, r1, r12, lsl #5
|
||||||
|
|
||||||
|
mov r2, r0
|
||||||
|
mov r3, r2
|
||||||
|
mov r4, r2
|
||||||
|
mov r5, r2
|
||||||
|
mov r6, r2
|
||||||
|
mov r7, r2
|
||||||
|
mov r8, r2
|
||||||
|
|
||||||
|
LSYM(40)
|
||||||
|
cmp r1, r12 // while (destp < destBlockEndp)
|
||||||
|
stmltia r1!, {r0, r2-r8} // *((vu32 *)(destp++)) = data
|
||||||
|
blt BSYM(40)
|
||||||
|
LSYM(41)
|
||||||
|
cmp r1, r9 // while (destp < destEndp)
|
||||||
|
stmltia r1!, {r0} // *((vu32 *)(destp++)) = data
|
||||||
|
blt BSYM(41)
|
||||||
|
|
||||||
|
ldmfd sp!, {r4-r9}
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: i_miCpuCopyFast
|
||||||
|
|
||||||
|
Description: copy memory by CPU
|
||||||
|
high speed by loading/writing 32byte at a time using stm/ldm
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void i_miCpuCopyFast( register const void *srcp, register void *destp, register u32 size )
|
||||||
|
{
|
||||||
|
stmfd sp!, {r4-r10}
|
||||||
|
|
||||||
|
add r10, r1, r2 // r10: destEndp = destp + size
|
||||||
|
mov r12, r2, lsr #5 // r12: destBlockEndp = destp + size/32*32
|
||||||
|
add r12, r1, r12, lsl #5
|
||||||
|
|
||||||
|
LSYM(50)
|
||||||
|
cmp r1, r12 // while (destp < destBlockEndp)
|
||||||
|
ldmltia r0!, {r2-r9} // *((vu32 *)(destp)++) = *((vu32 *)(srcp)++)
|
||||||
|
stmltia r1!, {r2-r9}
|
||||||
|
blt BSYM(50)
|
||||||
|
LSYM(51)
|
||||||
|
cmp r1, r10 // while (destp < destEndp)
|
||||||
|
ldmltia r0!, {r2} // *((vu32 *)(destp)++) = *((vu32 *)(srcp)++)
|
||||||
|
stmltia r1!, {r2}
|
||||||
|
blt BSYM(51)
|
||||||
|
|
||||||
|
ldmfd sp!, {r4-r10}
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
// FOR CONVINIENCE (memory copy)
|
||||||
|
//=======================================================================
|
||||||
|
#ifdef BROM_ENABLE_CONVINIENCE_COPY
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCopy16B
|
||||||
|
|
||||||
|
Description: copy 16byte data by CPU
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void miCopy16B(register const void* pSrc, register void* pDest)
|
||||||
|
{
|
||||||
|
ldmia r0!, {r2, r3, r12} // r0-r3, r12 need not saved
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2}
|
||||||
|
stmia r1!, {r2}
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCopy32B
|
||||||
|
|
||||||
|
Description: copy 32byte data by CPU
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void miCopy32B(register const void* pSrc, register void* pDest)
|
||||||
|
{
|
||||||
|
ldmia r0!, {r2, r3, r12} // r0-r3, r12 need not saved
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3}
|
||||||
|
stmia r1!, {r2, r3}
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCopy36B
|
||||||
|
|
||||||
|
Description: copy 36byte data by CPU
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void miCopy36B(register const void* pSrc, register void* pDest)
|
||||||
|
{
|
||||||
|
ldmia r0!, {r2, r3, r12} // r0-r3, r12 need not saved
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCopy48B
|
||||||
|
|
||||||
|
Description: copy 48byte data by CPU
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void miCopy48B(register const void* pSrc, register void* pDest)
|
||||||
|
{
|
||||||
|
ldmia r0!, {r2, r3, r12} // r0-r3, r12 need not saved
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCopy64B
|
||||||
|
|
||||||
|
Description: copy 64byte data by CPU
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void miCopy64B(register const void* pSrc, register void* pDest)
|
||||||
|
{
|
||||||
|
ldmia r0!, {r2, r3, r12} // r0-r3, r12 need not saved
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0!, {r2, r3, r12}
|
||||||
|
stmia r1!, {r2, r3, r12}
|
||||||
|
ldmia r0, {r0, r2, r3, r12}
|
||||||
|
stmia r1!, {r0, r2, r3, r12}
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCopy128B
|
||||||
|
|
||||||
|
Description: copy 128byte data by CPU
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
destp : destination address
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
asm void miCopy128B(register const void* pSrc, register void* pDest)
|
||||||
|
{
|
||||||
|
stmfd sp!, {r4}
|
||||||
|
|
||||||
|
ldmia r0!, {r2, r3, r4, r12} // r0-r3, r12 need not saved
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
ldmia r0!, {r2, r3, r4, r12}
|
||||||
|
stmia r1!, {r2, r3, r4, r12}
|
||||||
|
|
||||||
|
ldmfd sp!, {r4}
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#endif // BROM_BROM_ENABLE_CONVINIENCE_COPY
|
||||||
|
|
||||||
|
|
||||||
|
//=======================================================================
|
||||||
|
// FOR SDK USE (needless set alignment)
|
||||||
|
//=======================================================================
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCpuFill8
|
||||||
|
|
||||||
|
Description: fill memory with specified data.
|
||||||
|
consider for alignment automatically.
|
||||||
|
|
||||||
|
Arguments: dstp : destination address
|
||||||
|
data : fill data
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifdef SDK_SMALL_BUILD
|
||||||
|
asm void miCpuFill8( register void *dstp, register u8 data, register u32 size )
|
||||||
|
{
|
||||||
|
mov r12, #0 // n = 0
|
||||||
|
LSYM(1)
|
||||||
|
cmp r12, r2 // n < size ?
|
||||||
|
strltb r1, [r0, r12] // *((u8*)( dstp + n ) ) = data
|
||||||
|
|
||||||
|
addlt r12, r12, #1 // n ++
|
||||||
|
blt BYM(1)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#else //ifdef SDK_SMALL_BUILD
|
||||||
|
asm void miCpuFill8( register void *dstp, register u8 data, register u32 size )
|
||||||
|
{
|
||||||
|
cmp r2, #0
|
||||||
|
bxeq lr
|
||||||
|
|
||||||
|
// dstp を 16bit アライン.
|
||||||
|
tst r0, #1
|
||||||
|
beq FSYM(1)
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r12, [r0, #-1]
|
||||||
|
#else
|
||||||
|
LDRH_AD4( HALFW_CONDAL, 12, 0, 1 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
and r12, r12, #0x00FF
|
||||||
|
orr r3, r12, r1, lsl #8
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r3, [r0, #-1]
|
||||||
|
#else
|
||||||
|
STRH_AD4( HALFW_CONDAL, 3, 0, 1 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
add r0, r0, #1
|
||||||
|
subs r2, r2, #1
|
||||||
|
bxeq lr
|
||||||
|
LSYM(1)
|
||||||
|
|
||||||
|
// 32bit アライン.
|
||||||
|
cmp r2, #2
|
||||||
|
bcc FSYM(6)
|
||||||
|
orr r1, r1, r1, lsl #8
|
||||||
|
tst r0, #2
|
||||||
|
beq FSYM(8)
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r1, [r0], #2
|
||||||
|
#else
|
||||||
|
STRH_AD1( HALFW_CONDAL, 1, 0, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
subs r2, r2, #2
|
||||||
|
bxeq lr
|
||||||
|
LSYM(8)
|
||||||
|
// 32bit 転送.
|
||||||
|
orr r1, r1, r1, lsl #16
|
||||||
|
bics r3, r2, #3
|
||||||
|
beq FSYM(10)
|
||||||
|
sub r2, r2, r3
|
||||||
|
add r12, r3, r0
|
||||||
|
LSYM(9)
|
||||||
|
str r1, [r0], #4
|
||||||
|
cmp r0, r12
|
||||||
|
bcc BSYM(9)
|
||||||
|
|
||||||
|
LSYM(10)
|
||||||
|
// 最後の 16bit 転送.
|
||||||
|
tst r2, #2
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strneh r1, [r0], #2
|
||||||
|
#else
|
||||||
|
STRH_AD1( HALFW_CONDNE, 1, 0, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LSYM(6)
|
||||||
|
// 最後の 8bit 転送.
|
||||||
|
tst r2, #1
|
||||||
|
bxeq lr
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r3, [r0]
|
||||||
|
#else
|
||||||
|
LDRH_AD2( HALFW_CONDAL, 3, 0, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
and r3, r3, #0xFF00
|
||||||
|
and r1, r1, #0x00FF
|
||||||
|
orr r1, r1, r3
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r1, [r0]
|
||||||
|
#else
|
||||||
|
STRH_AD2( HALFW_CONDAL, 1, 0, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#endif // ifdef SDK_SMALL_BUILD
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*
|
||||||
|
Name: miCpuCopy8
|
||||||
|
|
||||||
|
Description: copy memory by CPU
|
||||||
|
consider for alignment automatically.
|
||||||
|
|
||||||
|
Arguments: srcp : source address
|
||||||
|
dstp : destination address
|
||||||
|
size : size (byte)
|
||||||
|
|
||||||
|
Returns: None
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
#ifdef SDK_SMALL_BUILD
|
||||||
|
asm void miCpuCopy8( register const void *srcp, register void *dstp, register u32 size )
|
||||||
|
{
|
||||||
|
mov r12, #0 // n = 0
|
||||||
|
LSYM(1)
|
||||||
|
cmp r12, r2 // n < size ?
|
||||||
|
ldrltb r3, [r0, r12] // *((vu8 *)(destp + p)) = *((vu8 *)(srcp + n))
|
||||||
|
strltb r3, [r1, r12]
|
||||||
|
|
||||||
|
addlt r12, r12, #1 // n ++
|
||||||
|
blt BSYM(1)
|
||||||
|
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#else //ifdef SDK_SMALL_BUILD
|
||||||
|
asm void miCpuCopy8( register const void *srcp, register void *dstp, register u32 size )
|
||||||
|
{
|
||||||
|
cmp r2, #0
|
||||||
|
bxeq lr
|
||||||
|
|
||||||
|
// dstp を 16bit アライン.
|
||||||
|
tst r1, #1
|
||||||
|
beq FSYM(1)
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r12, [r1, #-1]
|
||||||
|
#else
|
||||||
|
LDRH_AD4( HALFW_CONDAL, 12, 1, 1 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
and r12, r12, #0x00FF
|
||||||
|
tst r0, #1
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrneh r3, [r0, #-1]
|
||||||
|
#else
|
||||||
|
LDRH_AD4( HALFW_CONDNE, 3, 0, 1 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
movne r3, r3, lsr #8
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldreqh r3, [r0]
|
||||||
|
#else
|
||||||
|
LDRH_AD2( HALFW_CONDEQ, 3, 0, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
orr r3, r12, r3, lsl #8
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r3, [r1, #-1]
|
||||||
|
#else
|
||||||
|
STRH_AD4( HALFW_CONDAL, 3, 1, 1 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
add r0, r0, #1
|
||||||
|
add r1, r1, #1
|
||||||
|
subs r2, r2, #1
|
||||||
|
bxeq lr
|
||||||
|
LSYM(1)
|
||||||
|
|
||||||
|
// アドレス端数の 16/32bit 同期をチェック.
|
||||||
|
eor r12, r1, r0
|
||||||
|
tst r12, #1
|
||||||
|
beq FSYM(2)
|
||||||
|
|
||||||
|
// 全く同期しないので変則 16bit 転送.
|
||||||
|
// tmp = *(u16*)src++ >> 8;
|
||||||
|
// while((size -= 2) >= 0) {
|
||||||
|
// tmp |= (*(u16*)src++ << 8);
|
||||||
|
// *(u16*)dst++ = (u16)tmp;
|
||||||
|
// tmp >>= 16;
|
||||||
|
// }
|
||||||
|
bic r0, r0, #1
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r12, [r0], #2
|
||||||
|
#else
|
||||||
|
LDRH_AD1( HALFW_CONDAL, 12, 0, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
mov r3, r12, lsr #8
|
||||||
|
subs r2, r2, #2
|
||||||
|
bcc FSYM(3)
|
||||||
|
LSYM(4)
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r12, [r0], #2
|
||||||
|
#else
|
||||||
|
LDRH_AD1( HALFW_CONDAL, 12, 0, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
orr r12, r3, r12, lsl #8
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r12, [r1], #2
|
||||||
|
#else
|
||||||
|
STRH_AD1( HALFW_CONDAL, 12, 1, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
mov r3, r12, lsr #16
|
||||||
|
subs r2, r2, #2
|
||||||
|
bcs BSYM(4)
|
||||||
|
|
||||||
|
LSYM(3)
|
||||||
|
// if(size & 1)
|
||||||
|
// *dst = (u16)((*dst & 0xFF00) | tmp);
|
||||||
|
// return;
|
||||||
|
tst r2, #1
|
||||||
|
bxeq lr
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r12, [r1]
|
||||||
|
#else
|
||||||
|
LDRH_AD2( HALFW_CONDAL, 12, 1, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
and r12, r12, #0xFF00
|
||||||
|
orr r12, r12, r3
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r12, [r1]
|
||||||
|
#else
|
||||||
|
STRH_AD2( HALFW_CONDAL, 12, 1, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
bx lr
|
||||||
|
|
||||||
|
LSYM(2)
|
||||||
|
tst r12, #2
|
||||||
|
beq FSYM(5)
|
||||||
|
// 16bit 転送.
|
||||||
|
bics r3, r2, #1
|
||||||
|
beq FSYM(6)
|
||||||
|
sub r2, r2, r3
|
||||||
|
add r12, r3, r1
|
||||||
|
LSYM(7)
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r3, [r0], #2
|
||||||
|
#else
|
||||||
|
LDRH_AD1( HALFW_CONDAL, 3, 0, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r3, [r1], #2
|
||||||
|
#else
|
||||||
|
STRH_AD1( HALFW_CONDAL, 3, 1, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
cmp r1, r12
|
||||||
|
bcc BSYM(7)
|
||||||
|
b FSYM(6)
|
||||||
|
|
||||||
|
LSYM(5)
|
||||||
|
// 32bit アライン.
|
||||||
|
cmp r2, #2
|
||||||
|
bcc FSYM(6)
|
||||||
|
tst r1, #2
|
||||||
|
beq FSYM(8)
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r3, [r0], #2
|
||||||
|
#else
|
||||||
|
LDRH_AD1( HALFW_CONDAL, 3, 0, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r3, [r1], #2
|
||||||
|
#else
|
||||||
|
STRH_AD1( HALFW_CONDAL, 3, 1, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
subs r2, r2, #2
|
||||||
|
bxeq lr
|
||||||
|
LSYM(8)
|
||||||
|
// 32bit 転送.
|
||||||
|
bics r3, r2, #3
|
||||||
|
beq FSYM(10)
|
||||||
|
sub r2, r2, r3
|
||||||
|
add r12, r3, r1
|
||||||
|
LSYM(9)
|
||||||
|
ldr r3, [r0], #4
|
||||||
|
str r3, [r1], #4
|
||||||
|
cmp r1, r12
|
||||||
|
bcc BSYM(9)
|
||||||
|
|
||||||
|
LSYM(10)
|
||||||
|
// 最後の 16bit 転送.
|
||||||
|
tst r2, #2
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrneh r3, [r0], #2
|
||||||
|
strneh r3, [r1], #2
|
||||||
|
#else
|
||||||
|
LDRH_AD1( HALFW_CONDNE, 3, 0, 2 ) // *** for CW BUG
|
||||||
|
STRH_AD1( HALFW_CONDNE, 3, 1, 2 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
LSYM(6)
|
||||||
|
// 最後の 8bit 転送.
|
||||||
|
tst r2, #1
|
||||||
|
bxeq lr
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
ldrh r2, [r1]
|
||||||
|
ldrh r0, [r0]
|
||||||
|
#else
|
||||||
|
LDRH_AD2( HALFW_CONDAL, 2, 1, 0 ) // *** for CW BUG
|
||||||
|
LDRH_AD2( HALFW_CONDAL, 0, 0, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
and r2, r2, #0xFF00
|
||||||
|
and r0, r0, #0x00FF
|
||||||
|
orr r0, r2, r0
|
||||||
|
#ifndef CW_BUG_FOR_LDRH_AND_STRH
|
||||||
|
strh r0, [r1]
|
||||||
|
#else
|
||||||
|
STRH_AD2( HALFW_CONDAL, 0, 1, 0 ) // *** for CW BUG
|
||||||
|
#endif
|
||||||
|
bx lr
|
||||||
|
}
|
||||||
|
#endif //ifdef SDK_SMALL_BUILD
|
||||||
|
|
||||||
|
#include <brom/codereset.h>
|
||||||
|
|
||||||
|
|
||||||
@ -676,7 +676,7 @@ void osCreateThread(OSThread *thread,
|
|||||||
thread->context.lr = (u32)osExitThread;
|
thread->context.lr = (u32)osExitThread;
|
||||||
|
|
||||||
//---- clear Stack (except check code (=sizeof(u32)*2) and padding(sizeof(u32))
|
//---- clear Stack (except check code (=sizeof(u32)*2) and padding(sizeof(u32))
|
||||||
MI_CpuClear32((void *)((u32)stack - stackSize + sizeof(u32)), stackSize - sizeof(u32) * 2 - sizeof(u32) );
|
miCpuClear32((void *)((u32)stack - stackSize + sizeof(u32)), stackSize - sizeof(u32) * 2 - sizeof(u32) );
|
||||||
|
|
||||||
//---- clear mutex
|
//---- clear mutex
|
||||||
thread->mutex = NULL;
|
thread->mutex = NULL;
|
||||||
@ -699,7 +699,7 @@ void osCreateThread(OSThread *thread,
|
|||||||
thread->link.prev = thread->link.next = NULL;
|
thread->link.prev = thread->link.next = NULL;
|
||||||
|
|
||||||
//---- clear specific member
|
//---- clear specific member
|
||||||
MI_CpuClear32(&thread->specific[0], sizeof(void *) * OS_THREAD_SPECIFIC_MAX);
|
miCpuClear32(&thread->specific[0], sizeof(void *) * OS_THREAD_SPECIFIC_MAX);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//---- clear alarm pointer for sleep
|
//---- clear alarm pointer for sleep
|
||||||
|
|||||||
@ -26,36 +26,36 @@ extern "C" {
|
|||||||
|
|
||||||
|
|
||||||
//======================================================================
|
//======================================================================
|
||||||
void MIi_CpuClear16(u16 data, void *destp, u32 size);
|
void i_miCpuClear16(u16 data, void *destp, u32 size);
|
||||||
void MIi_CpuCopy16(const void *srcp, void *destp, u32 size);
|
void i_miCpuCopy16(const void *srcp, void *destp, u32 size);
|
||||||
void MIi_CpuSend16(const void *srcp, volatile void *destp, u32 size);
|
void i_miCpuSend16(const void *srcp, volatile void *destp, u32 size);
|
||||||
void MIi_CpuRecv16(volatile const void *srcp, void *destp, u32 size);
|
void i_miCpuRecv16(volatile const void *srcp, void *destp, u32 size);
|
||||||
void MIi_CpuPipe16(volatile const void *srcp, volatile void *destp, u32 size);
|
void i_miCpuPipe16(volatile const void *srcp, volatile void *destp, u32 size);
|
||||||
void MIi_CpuMove16(const void *src, void *dest, u32 size);
|
void i_miCpuMove16(const void *src, void *dest, u32 size);
|
||||||
void* MIi_CpuFind16(const void *src, u16 data, u32 size);
|
void* i_miCpuFind16(const void *src, u16 data, u32 size);
|
||||||
int MIi_CpuComp16(const void *mem1, const void *mem2, u32 size);
|
int i_miCpuComp16(const void *mem1, const void *mem2, u32 size);
|
||||||
|
|
||||||
void MIi_CpuClear32(u32 data, void *destp, u32 size);
|
void i_miCpuClear32(u32 data, void *destp, u32 size);
|
||||||
void MIi_CpuCopy32(const void *srcp, void *destp, u32 size);
|
void i_miCpuCopy32(const void *srcp, void *destp, u32 size);
|
||||||
void MIi_CpuSend32(const void *srcp, volatile void *destp, u32 size);
|
void i_miCpuSend32(const void *srcp, volatile void *destp, u32 size);
|
||||||
void MIi_CpuRecv32(volatile const void *srcp, void *destp, u32 size);
|
void i_miCpuRecv32(volatile const void *srcp, void *destp, u32 size);
|
||||||
void MIi_CpuPipe32(volatile const void *srcp, volatile void *destp, u32 size);
|
void i_miCpuPipe32(volatile const void *srcp, volatile void *destp, u32 size);
|
||||||
void MIi_CpuMove32(const void *src, void *dest, u32 size);
|
void i_miCpuMove32(const void *src, void *dest, u32 size);
|
||||||
void* MIi_CpuFind32(const void *src, u32 data, u32 size);
|
void* i_miCpuFind32(const void *src, u32 data, u32 size);
|
||||||
int MIi_CpuComp32(const void *mem1, const void *mem2, u32 size);
|
int i_miCpuComp32(const void *mem1, const void *mem2, u32 size);
|
||||||
|
|
||||||
void MIi_CpuClearFast(u32 data, void *destp, u32 size);
|
void i_miCpuClearFast(u32 data, void *destp, u32 size);
|
||||||
void MIi_CpuCopyFast(const void *srcp, void *destp, u32 size);
|
void i_miCpuCopyFast(const void *srcp, void *destp, u32 size);
|
||||||
void MIi_CpuSendFast(const void *srcp, volatile void *destp, u32 size);
|
void i_miCpuSendFast(const void *srcp, volatile void *destp, u32 size);
|
||||||
void MIi_CpuRecvFast(volatile const void *srcp, void *destp, u32 size);
|
void i_miCpuRecvFast(volatile const void *srcp, void *destp, u32 size);
|
||||||
void MIi_CpuMoveFast(const void *src, void *dest, u32 size);
|
void i_miCpuMoveFast(const void *src, void *dest, u32 size);
|
||||||
|
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
// 32 bit version
|
// 32 bit version
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFill32
|
Name: miCpuFill32
|
||||||
|
|
||||||
Description: fill memory with specified data. (32 bit version)
|
Description: fill memory with specified data. (32 bit version)
|
||||||
|
|
||||||
@ -65,16 +65,16 @@ void MIi_CpuMoveFast(const void *src, void *dest, u32 size);
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuFill32(void *dest, u32 data, u32 size)
|
static inline void miCpuFill32(void *dest, u32 data, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuClear32(data, dest, size);
|
i_miCpuClear32(data, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuCopy32
|
Name: miCpuCopy32
|
||||||
|
|
||||||
Description: copy memory data (32 bit version)
|
Description: copy memory data (32 bit version)
|
||||||
|
|
||||||
@ -84,17 +84,17 @@ static inline void MI_CpuFill32(void *dest, u32 data, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuCopy32(const void *src, void *dest, u32 size)
|
static inline void miCpuCopy32(const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuCopy32(src, dest, size);
|
i_miCpuCopy32(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuClear32
|
Name: miCpuClear32
|
||||||
|
|
||||||
Description: fill memory with 0 (32 bit version)
|
Description: fill memory with 0 (32 bit version)
|
||||||
|
|
||||||
@ -103,13 +103,13 @@ static inline void MI_CpuCopy32(const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuClear32(void *dest, u32 size)
|
static inline void miCpuClear32(void *dest, u32 size)
|
||||||
{
|
{
|
||||||
MI_CpuFill32(dest, 0, size);
|
miCpuFill32(dest, 0, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuSend32
|
Name: miCpuSend32
|
||||||
|
|
||||||
Description: write some data to fixed address (32 bit version)
|
Description: write some data to fixed address (32 bit version)
|
||||||
|
|
||||||
@ -119,17 +119,17 @@ static inline void MI_CpuClear32(void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuSend32(const void *src, volatile void *dest, u32 size)
|
static inline void miCpuSend32(const void *src, volatile void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuSend32(src, dest, size);
|
i_miCpuSend32(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuRecv32
|
Name: miCpuRecv32
|
||||||
|
|
||||||
Description: receive u32 data from fixed address
|
Description: receive u32 data from fixed address
|
||||||
32bit version
|
32bit version
|
||||||
@ -140,17 +140,17 @@ static inline void MI_CpuSend32(const void *src, volatile void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuRecv32(volatile const void *src, void *dest, u32 size)
|
static inline void miCpuRecv32(volatile const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuRecv32(src, dest, size);
|
i_miCpuRecv32(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuPipe32
|
Name: miCpuPipe32
|
||||||
|
|
||||||
Description: pipe data from fixed address to fixed address.
|
Description: pipe data from fixed address to fixed address.
|
||||||
32bit version
|
32bit version
|
||||||
@ -161,17 +161,17 @@ static inline void MI_CpuRecv32(volatile const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuPipe32(volatile const void *src, volatile void *dest, u32 size)
|
static inline void miCpuPipe32(volatile const void *src, volatile void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuPipe32(src, dest, size);
|
i_miCpuPipe32(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuMove32
|
Name: miCpuMove32
|
||||||
|
|
||||||
Description: move memory data (32 bit version)
|
Description: move memory data (32 bit version)
|
||||||
|
|
||||||
@ -181,17 +181,17 @@ static inline void MI_CpuPipe32(volatile const void *src, volatile void *dest, u
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuMove32(const void *src, void *dest, u32 size)
|
static inline void miCpuMove32(const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuMove32(src, dest, size);
|
i_miCpuMove32(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFind32
|
Name: miCpuFind32
|
||||||
|
|
||||||
Description: find memory data (32 bit version)
|
Description: find memory data (32 bit version)
|
||||||
|
|
||||||
@ -201,16 +201,16 @@ static inline void MI_CpuMove32(const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: pointer to found data or NULL.
|
Returns: pointer to found data or NULL.
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void* MI_CpuFind32(const void *src, u32 data, u32 size)
|
static inline void* miCpuFind32(const void *src, u32 data, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
|
|
||||||
return MIi_CpuFind32(src, data, size);
|
return i_miCpuFind32(src, data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuComp32
|
Name: miCpuComp32
|
||||||
|
|
||||||
Description: compare memory data (32 bit version)
|
Description: compare memory data (32 bit version)
|
||||||
|
|
||||||
@ -222,20 +222,20 @@ static inline void* MI_CpuFind32(const void *src, u32 data, u32 size)
|
|||||||
= 0 : mem1 equals mem2
|
= 0 : mem1 equals mem2
|
||||||
> 0 : mem1 larger than mem2
|
> 0 : mem1 larger than mem2
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline int MI_CpuComp32(const void *mem1, const void *mem2, u32 size)
|
static inline int miCpuComp32(const void *mem1, const void *mem2, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)mem1 & 3) == 0, "target address 1 must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)mem1 & 3) == 0, "target address 1 must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)mem2 & 3) == 0, "target address 2 must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)mem2 & 3) == 0, "target address 2 must be in 4-byte alignment");
|
||||||
|
|
||||||
return MIi_CpuComp32(mem1, mem2, size);
|
return i_miCpuComp32(mem1, mem2, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
// 16 bit version
|
// 16 bit version
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFill16
|
Name: miCpuFill16
|
||||||
|
|
||||||
Description: fill memory with specified data. (16 bit version)
|
Description: fill memory with specified data. (16 bit version)
|
||||||
|
|
||||||
@ -245,16 +245,16 @@ static inline int MI_CpuComp32(const void *mem1, const void *mem2, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuFill16(void *dest, u16 data, u32 size)
|
static inline void miCpuFill16(void *dest, u16 data, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)dest & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
|
|
||||||
MIi_CpuClear16(data, dest, size);
|
i_miCpuClear16(data, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuCopy16
|
Name: miCpuCopy16
|
||||||
|
|
||||||
Description: copy memory data (16 bit version)
|
Description: copy memory data (16 bit version)
|
||||||
|
|
||||||
@ -264,17 +264,17 @@ static inline void MI_CpuFill16(void *dest, u16 data, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuCopy16(const void *src, void *dest, u32 size)
|
static inline void miCpuCopy16(const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
||||||
|
|
||||||
MIi_CpuCopy16(src, dest, size);
|
i_miCpuCopy16(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuClear16
|
Name: miCpuClear16
|
||||||
|
|
||||||
Description: fill memory with 0 (16 bit version)
|
Description: fill memory with 0 (16 bit version)
|
||||||
|
|
||||||
@ -283,13 +283,13 @@ static inline void MI_CpuCopy16(const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuClear16(void *dest, u32 size)
|
static inline void miCpuClear16(void *dest, u32 size)
|
||||||
{
|
{
|
||||||
MI_CpuFill16(dest, 0, size);
|
miCpuFill16(dest, 0, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuSend16
|
Name: miCpuSend16
|
||||||
|
|
||||||
Description: write some data to fixed address (16 bit version)
|
Description: write some data to fixed address (16 bit version)
|
||||||
|
|
||||||
@ -299,17 +299,17 @@ static inline void MI_CpuClear16(void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuSend16(const void *src, volatile void *dest, u32 size)
|
static inline void miCpuSend16(const void *src, volatile void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
||||||
|
|
||||||
MIi_CpuSend16(src, dest, size);
|
i_miCpuSend16(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuRecv16
|
Name: miCpuRecv16
|
||||||
|
|
||||||
Description: receive u16 data from fixed address
|
Description: receive u16 data from fixed address
|
||||||
16bit version
|
16bit version
|
||||||
@ -320,17 +320,17 @@ static inline void MI_CpuSend16(const void *src, volatile void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuRecv16(volatile const void *src, void *dest, u32 size)
|
static inline void miCpuRecv16(volatile const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
||||||
|
|
||||||
MIi_CpuRecv16(src, dest, size);
|
i_miCpuRecv16(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuRecv16
|
Name: miCpuRecv16
|
||||||
|
|
||||||
Description: pipe data from fixed address to fixed address.
|
Description: pipe data from fixed address to fixed address.
|
||||||
16bit version
|
16bit version
|
||||||
@ -341,17 +341,17 @@ static inline void MI_CpuRecv16(volatile const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuPipe16(volatile const void *src, volatile void *dest, u32 size)
|
static inline void miCpuPipe16(volatile const void *src, volatile void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
||||||
|
|
||||||
MIi_CpuPipe16(src, dest, size);
|
i_miCpuPipe16(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuMove16
|
Name: miCpuMove16
|
||||||
|
|
||||||
Description: move memory data (16 bit version)
|
Description: move memory data (16 bit version)
|
||||||
|
|
||||||
@ -361,17 +361,17 @@ static inline void MI_CpuPipe16(volatile const void *src, volatile void *dest, u
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuMove16(const void *src, void *dest, u32 size)
|
static inline void miCpuMove16(const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 1) == 0, "destination address must be in 2-byte alignment");
|
||||||
|
|
||||||
MIi_CpuMove16(src, dest, size);
|
i_miCpuMove16(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFind16
|
Name: miCpuFind16
|
||||||
|
|
||||||
Description: find memory data (16 bit version)
|
Description: find memory data (16 bit version)
|
||||||
|
|
||||||
@ -381,16 +381,16 @@ static inline void MI_CpuMove16(const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: pointer to found data or NULL.
|
Returns: pointer to found data or NULL.
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void* MI_CpuFind16(const void *src, u16 data, u32 size)
|
static inline void* miCpuFind16(const void *src, u16 data, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 1) == 0, "source address must be in 2-byte alignment");
|
||||||
|
|
||||||
return MIi_CpuFind16(src, data, size);
|
return i_miCpuFind16(src, data, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuComp16
|
Name: miCpuComp16
|
||||||
|
|
||||||
Description: compare memory data (16 bit version)
|
Description: compare memory data (16 bit version)
|
||||||
|
|
||||||
@ -402,20 +402,20 @@ static inline void* MI_CpuFind16(const void *src, u16 data, u32 size)
|
|||||||
= 0 : mem1 equals mem2
|
= 0 : mem1 equals mem2
|
||||||
> 0 : mem1 larger than mem2
|
> 0 : mem1 larger than mem2
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline int MI_CpuComp16(const void *mem1, const void *mem2, u32 size)
|
static inline int miCpuComp16(const void *mem1, const void *mem2, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
SDK_ASSERTMSG((size & 1) == 0, "size & 1 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)mem1 & 1) == 0, "target address 1 must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)mem1 & 1) == 0, "target address 1 must be in 2-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)mem2 & 1) == 0, "target address 2 must be in 2-byte alignment");
|
SDK_ASSERTMSG(((u32)mem2 & 1) == 0, "target address 2 must be in 2-byte alignment");
|
||||||
|
|
||||||
return MIi_CpuComp16(mem1, mem2, size);
|
return i_miCpuComp16(mem1, mem2, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
// 32 byte unit version
|
// 32 byte unit version
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFillFast
|
Name: miCpuFillFast
|
||||||
|
|
||||||
Description: fill memory with specified data quickly. (32 byte unit version)
|
Description: fill memory with specified data quickly. (32 byte unit version)
|
||||||
|
|
||||||
@ -425,16 +425,16 @@ static inline int MI_CpuComp16(const void *mem1, const void *mem2, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuFillFast(void *dest, u32 data, u32 size)
|
static inline void miCpuFillFast(void *dest, u32 data, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuClearFast(data, dest, size);
|
i_miCpuClearFast(data, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuCopyFast
|
Name: miCpuCopyFast
|
||||||
|
|
||||||
Description: copy memory data quickly (32 byte unit version)
|
Description: copy memory data quickly (32 byte unit version)
|
||||||
|
|
||||||
@ -444,17 +444,17 @@ static inline void MI_CpuFillFast(void *dest, u32 data, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuCopyFast(const void *src, void *dest, u32 size)
|
static inline void miCpuCopyFast(const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuCopyFast(src, dest, size);
|
i_miCpuCopyFast(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuClearFast
|
Name: miCpuClearFast
|
||||||
|
|
||||||
Description: fill memory with 0 quickly (32 byte unit version)
|
Description: fill memory with 0 quickly (32 byte unit version)
|
||||||
|
|
||||||
@ -463,15 +463,15 @@ static inline void MI_CpuCopyFast(const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuClearFast(void *dest, u32 size)
|
static inline void miCpuClearFast(void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MI_CpuFillFast(dest, 0, size);
|
miCpuFillFast(dest, 0, size);
|
||||||
}
|
}
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuSendFast
|
Name: miCpuSendFast
|
||||||
|
|
||||||
Description: move memory data (32 byte unit version)
|
Description: move memory data (32 byte unit version)
|
||||||
|
|
||||||
@ -481,17 +481,17 @@ static inline void MI_CpuClearFast(void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuSendFast( register const void *src, register volatile void *dest, register u32 size )
|
static inline void miCpuSendFast( register const void *src, register volatile void *dest, register u32 size )
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuSendFast(src, dest, size);
|
i_miCpuSendFast(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuRecvFast
|
Name: miCpuRecvFast
|
||||||
|
|
||||||
Description: move memory data (32 byte unit version)
|
Description: move memory data (32 byte unit version)
|
||||||
|
|
||||||
@ -501,17 +501,17 @@ static inline void MI_CpuSendFast( register const void *src, register volatile v
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuRecvFast(volatile const void *src, register void *dest, register u32 size)
|
static inline void miCpuRecvFast(volatile const void *src, register void *dest, register u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuRecvFast(src, dest, size);
|
i_miCpuRecvFast(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuMoveFast
|
Name: miCpuMoveFast
|
||||||
|
|
||||||
Description: move memory data (32 byte unit version)
|
Description: move memory data (32 byte unit version)
|
||||||
|
|
||||||
@ -521,13 +521,13 @@ static inline void MI_CpuRecvFast(volatile const void *src, register void *dest,
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuMoveFast(const void *src, void *dest, u32 size)
|
static inline void miCpuMoveFast(const void *src, void *dest, u32 size)
|
||||||
{
|
{
|
||||||
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
SDK_ASSERTMSG((size & 3) == 0, "size & 3 must be 0");
|
||||||
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)src & 3) == 0, "source address must be in 4-byte alignment");
|
||||||
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
SDK_ASSERTMSG(((u32)dest & 3) == 0, "destination address must be in 4-byte alignment");
|
||||||
|
|
||||||
MIi_CpuMoveFast(src, dest, size);
|
i_miCpuMoveFast(src, dest, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -535,7 +535,7 @@ static inline void MI_CpuMoveFast(const void *src, void *dest, u32 size)
|
|||||||
// 8 bit version
|
// 8 bit version
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFill8
|
Name: miCpuFill8
|
||||||
|
|
||||||
Description: fill memory with specified data. (8 bit version)
|
Description: fill memory with specified data. (8 bit version)
|
||||||
|
|
||||||
@ -545,10 +545,10 @@ static inline void MI_CpuMoveFast(const void *src, void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void MI_CpuFill8(void *dest, u8 data, u32 size);
|
void miCpuFill8(void *dest, u8 data, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuCopy8
|
Name: miCpuCopy8
|
||||||
|
|
||||||
Description: copy memory data (8 bit version)
|
Description: copy memory data (8 bit version)
|
||||||
|
|
||||||
@ -558,10 +558,10 @@ void MI_CpuFill8(void *dest, u8 data, u32 size);
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void MI_CpuCopy8(const void *src, void *dest, u32 size);
|
void miCpuCopy8(const void *src, void *dest, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFind8
|
Name: miCpuFind8
|
||||||
|
|
||||||
Description: find memory data (8 bit version)
|
Description: find memory data (8 bit version)
|
||||||
|
|
||||||
@ -571,10 +571,10 @@ void MI_CpuCopy8(const void *src, void *dest, u32 size);
|
|||||||
|
|
||||||
Returns: pointer to found data or NULL.
|
Returns: pointer to found data or NULL.
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void* MI_CpuFind8(const void *src, u8 data, u32 size);
|
void* miCpuFind8(const void *src, u8 data, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuComp8
|
Name: miCpuComp8
|
||||||
|
|
||||||
Description: compare memory data (8 bit version)
|
Description: compare memory data (8 bit version)
|
||||||
|
|
||||||
@ -586,10 +586,10 @@ void* MI_CpuFind8(const void *src, u8 data, u32 size);
|
|||||||
= 0 : mem1 equals mem2
|
= 0 : mem1 equals mem2
|
||||||
> 0 : mem1 larger than mem2
|
> 0 : mem1 larger than mem2
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
int MI_CpuComp8(const void *mem1, const void *mem2, u32 size);
|
int miCpuComp8(const void *mem1, const void *mem2, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuClear8
|
Name: miCpuClear8
|
||||||
|
|
||||||
Description: fill memory with 0 (8 bit version)
|
Description: fill memory with 0 (8 bit version)
|
||||||
|
|
||||||
@ -598,16 +598,16 @@ int MI_CpuComp8(const void *mem1, const void *mem2, u32 size);
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuClear8(void *dest, u32 size)
|
static inline void miCpuClear8(void *dest, u32 size)
|
||||||
{
|
{
|
||||||
MI_CpuFill8(dest, 0, size);
|
miCpuFill8(dest, 0, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
// 32 bit version
|
// 32 bit version
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_ReadWord
|
Name: miReadWord
|
||||||
|
|
||||||
Description: read 32 bit data from specified address
|
Description: read 32 bit data from specified address
|
||||||
|
|
||||||
@ -616,11 +616,11 @@ static inline void MI_CpuClear8(void *dest, u32 size)
|
|||||||
Returns: data which is read
|
Returns: data which is read
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#ifndef SDK_ASM
|
#ifndef SDK_ASM
|
||||||
#define MI_ReadWord( adrs ) (*(vu32 *)(adrs))
|
#define miReadWord( adrs ) (*(vu32 *)(adrs))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_WriteWord
|
Name: miWriteWord
|
||||||
|
|
||||||
Description: write 32 bit data to specified adress
|
Description: write 32 bit data to specified adress
|
||||||
|
|
||||||
@ -630,7 +630,7 @@ static inline void MI_CpuClear8(void *dest, u32 size)
|
|||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
#ifndef SDK_ASM
|
#ifndef SDK_ASM
|
||||||
#define MI_WriteWord( adrs, val ) do { (*(vu32 *)(adrs)) = (u32)(val); } while(0)
|
#define miWriteWord( adrs, val ) do { (*(vu32 *)(adrs)) = (u32)(val); } while(0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -639,7 +639,7 @@ static inline void MI_CpuClear8(void *dest, u32 size)
|
|||||||
//================================================================================
|
//================================================================================
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuFill
|
Name: miCpuFill
|
||||||
|
|
||||||
Description: fill memory with specified data. (mixed version)
|
Description: fill memory with specified data. (mixed version)
|
||||||
|
|
||||||
@ -649,10 +649,10 @@ static inline void MI_CpuClear8(void *dest, u32 size)
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void MI_CpuFill(void *dest, u8 data, u32 size);
|
void miCpuFill(void *dest, u8 data, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuCopy
|
Name: miCpuCopy
|
||||||
|
|
||||||
Description: copy memory data (mixed version)
|
Description: copy memory data (mixed version)
|
||||||
|
|
||||||
@ -662,10 +662,10 @@ void MI_CpuFill(void *dest, u8 data, u32 size);
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void MI_CpuCopy(const void *srcp, void *destp, u32 size);
|
void miCpuCopy(const void *srcp, void *destp, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuMove
|
Name: miCpuMove
|
||||||
|
|
||||||
Description: move memory data (mixed version)
|
Description: move memory data (mixed version)
|
||||||
|
|
||||||
@ -675,10 +675,10 @@ void MI_CpuCopy(const void *srcp, void *destp, u32 size);
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
void MI_CpuMove(const void *srcp, void *destp, u32 size);
|
void miCpuMove(const void *srcp, void *destp, u32 size);
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
Name: MI_CpuClear
|
Name: miCpuClear
|
||||||
|
|
||||||
Description: fill memory with 0 (mixed version)
|
Description: fill memory with 0 (mixed version)
|
||||||
|
|
||||||
@ -687,26 +687,26 @@ void MI_CpuMove(const void *srcp, void *destp, u32 size);
|
|||||||
|
|
||||||
Returns: None
|
Returns: None
|
||||||
*---------------------------------------------------------------------------*/
|
*---------------------------------------------------------------------------*/
|
||||||
static inline void MI_CpuClear(void *dest, u32 size)
|
static inline void miCpuClear(void *dest, u32 size)
|
||||||
{
|
{
|
||||||
MI_CpuFill(dest, 0, size);
|
miCpuFill(dest, 0, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
// the following functions are prepared for SDK private use.
|
// the following functions are prepared for SDK private use.
|
||||||
// don't use in application thoughtlessly
|
// don't use in application thoughtlessly
|
||||||
//================================================================================
|
//================================================================================
|
||||||
void MI_Copy16B(register const void *pSrc, register void *pDest);
|
void miCopy16B(register const void *pSrc, register void *pDest);
|
||||||
void MI_Copy32B(register const void *pSrc, register void *pDest);
|
void miCopy32B(register const void *pSrc, register void *pDest);
|
||||||
void MI_Copy36B(register const void *pSrc, register void *pDest);
|
void miCopy36B(register const void *pSrc, register void *pDest);
|
||||||
void MI_Copy48B(register const void *pSrc, register void *pDest);
|
void miCopy48B(register const void *pSrc, register void *pDest);
|
||||||
void MI_Copy64B(register const void *pSrc, register void *pDest);
|
void miCopy64B(register const void *pSrc, register void *pDest);
|
||||||
void MI_Copy128B(register const void *pSrc, register void *pDest);
|
void miCopy128B(register const void *pSrc, register void *pDest);
|
||||||
|
|
||||||
void MI_Zero32B(register void *pDest);
|
void miZero32B(register void *pDest);
|
||||||
void MI_Zero36B(register void *pDest);
|
void miZero36B(register void *pDest);
|
||||||
void MI_Zero48B(register void *pDest);
|
void miZero48B(register void *pDest);
|
||||||
void MI_Zero64B(register void *pDest);
|
void miZero64B(register void *pDest);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} /* extern "C" */
|
} /* extern "C" */
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user