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 ?= \
|
||||
libos \
|
||||
libmi \
|
||||
|
||||
ifdef BROM_PROFILE_TYPE
|
||||
BROM_LIBS_BASE += libos.$(BROM_PROFILE_TYPE)
|
||||
@ -254,6 +255,7 @@ else # ($(CODEGEN_PROC),ARM9)
|
||||
|
||||
BROM_LIBS_BASE ?= \
|
||||
libos_sp \
|
||||
libmi_sp \
|
||||
|
||||
ifdef BROM_PROFILE_TYPE
|
||||
BROM_LIBS_BASE += libos_sp.$(BROM_PROFILE_TYPE)
|
||||
|
||||
@ -23,6 +23,7 @@ include $(CTRBROM_ROOT)/build/buildtools/commondefs
|
||||
SUBDIRS = \
|
||||
init \
|
||||
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;
|
||||
|
||||
//---- 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
|
||||
thread->mutex = NULL;
|
||||
@ -699,7 +699,7 @@ void osCreateThread(OSThread *thread,
|
||||
thread->link.prev = thread->link.next = NULL;
|
||||
|
||||
//---- 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
|
||||
|
||||
//---- clear alarm pointer for sleep
|
||||
|
||||
@ -26,36 +26,36 @@ extern "C" {
|
||||
|
||||
|
||||
//======================================================================
|
||||
void MIi_CpuClear16(u16 data, void *destp, u32 size);
|
||||
void MIi_CpuCopy16(const void *srcp, void *destp, u32 size);
|
||||
void MIi_CpuSend16(const void *srcp, volatile void *destp, u32 size);
|
||||
void MIi_CpuRecv16(volatile const void *srcp, void *destp, u32 size);
|
||||
void MIi_CpuPipe16(volatile const void *srcp, volatile void *destp, u32 size);
|
||||
void MIi_CpuMove16(const void *src, void *dest, u32 size);
|
||||
void* MIi_CpuFind16(const void *src, u16 data, u32 size);
|
||||
int MIi_CpuComp16(const void *mem1, const void *mem2, u32 size);
|
||||
void i_miCpuClear16(u16 data, void *destp, u32 size);
|
||||
void i_miCpuCopy16(const void *srcp, void *destp, u32 size);
|
||||
void i_miCpuSend16(const void *srcp, volatile void *destp, u32 size);
|
||||
void i_miCpuRecv16(volatile const void *srcp, void *destp, u32 size);
|
||||
void i_miCpuPipe16(volatile const void *srcp, volatile void *destp, u32 size);
|
||||
void i_miCpuMove16(const void *src, void *dest, u32 size);
|
||||
void* i_miCpuFind16(const void *src, u16 data, u32 size);
|
||||
int i_miCpuComp16(const void *mem1, const void *mem2, u32 size);
|
||||
|
||||
void MIi_CpuClear32(u32 data, void *destp, u32 size);
|
||||
void MIi_CpuCopy32(const void *srcp, void *destp, u32 size);
|
||||
void MIi_CpuSend32(const void *srcp, volatile void *destp, u32 size);
|
||||
void MIi_CpuRecv32(volatile const void *srcp, void *destp, u32 size);
|
||||
void MIi_CpuPipe32(volatile const void *srcp, volatile void *destp, u32 size);
|
||||
void MIi_CpuMove32(const void *src, void *dest, u32 size);
|
||||
void* MIi_CpuFind32(const void *src, u32 data, u32 size);
|
||||
int MIi_CpuComp32(const void *mem1, const void *mem2, u32 size);
|
||||
void i_miCpuClear32(u32 data, void *destp, u32 size);
|
||||
void i_miCpuCopy32(const void *srcp, void *destp, u32 size);
|
||||
void i_miCpuSend32(const void *srcp, volatile void *destp, u32 size);
|
||||
void i_miCpuRecv32(volatile const void *srcp, void *destp, u32 size);
|
||||
void i_miCpuPipe32(volatile const void *srcp, volatile void *destp, u32 size);
|
||||
void i_miCpuMove32(const void *src, void *dest, u32 size);
|
||||
void* i_miCpuFind32(const void *src, u32 data, u32 size);
|
||||
int i_miCpuComp32(const void *mem1, const void *mem2, u32 size);
|
||||
|
||||
void MIi_CpuClearFast(u32 data, void *destp, u32 size);
|
||||
void MIi_CpuCopyFast(const void *srcp, void *destp, u32 size);
|
||||
void MIi_CpuSendFast(const void *srcp, volatile void *destp, u32 size);
|
||||
void MIi_CpuRecvFast(volatile const void *srcp, void *destp, u32 size);
|
||||
void MIi_CpuMoveFast(const void *src, void *dest, u32 size);
|
||||
void i_miCpuClearFast(u32 data, void *destp, u32 size);
|
||||
void i_miCpuCopyFast(const void *srcp, void *destp, u32 size);
|
||||
void i_miCpuSendFast(const void *srcp, volatile void *destp, u32 size);
|
||||
void i_miCpuRecvFast(volatile const void *srcp, void *destp, u32 size);
|
||||
void i_miCpuMoveFast(const void *src, void *dest, u32 size);
|
||||
|
||||
|
||||
//================================================================================
|
||||
// 32 bit version
|
||||
//================================================================================
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuFill32
|
||||
Name: miCpuFill32
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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)
|
||||
|
||||
@ -84,17 +84,17 @@ static inline void MI_CpuFill32(void *dest, u32 data, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuCopy32(src, dest, size);
|
||||
i_miCpuCopy32(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuClear32
|
||||
Name: miCpuClear32
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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)
|
||||
|
||||
@ -119,17 +119,17 @@ static inline void MI_CpuClear32(void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuSend32(src, dest, size);
|
||||
i_miCpuSend32(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuRecv32
|
||||
Name: miCpuRecv32
|
||||
|
||||
Description: receive u32 data from fixed address
|
||||
32bit version
|
||||
@ -140,17 +140,17 @@ static inline void MI_CpuSend32(const void *src, volatile void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuRecv32(src, dest, size);
|
||||
i_miCpuRecv32(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuPipe32
|
||||
Name: miCpuPipe32
|
||||
|
||||
Description: pipe data from fixed address to fixed address.
|
||||
32bit version
|
||||
@ -161,17 +161,17 @@ static inline void MI_CpuRecv32(volatile const void *src, void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuPipe32(src, dest, size);
|
||||
i_miCpuPipe32(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuMove32
|
||||
Name: miCpuMove32
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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");
|
||||
|
||||
MIi_CpuMove32(src, dest, size);
|
||||
i_miCpuMove32(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuFind32
|
||||
Name: miCpuFind32
|
||||
|
||||
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.
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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)
|
||||
|
||||
@ -222,20 +222,20 @@ static inline void* MI_CpuFind32(const void *src, u32 data, u32 size)
|
||||
= 0 : mem1 equals 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(((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");
|
||||
|
||||
return MIi_CpuComp32(mem1, mem2, size);
|
||||
return i_miCpuComp32(mem1, mem2, size);
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
// 16 bit version
|
||||
//================================================================================
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuFill16
|
||||
Name: miCpuFill16
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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)
|
||||
|
||||
@ -264,17 +264,17 @@ static inline void MI_CpuFill16(void *dest, u16 data, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuCopy16(src, dest, size);
|
||||
i_miCpuCopy16(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuClear16
|
||||
Name: miCpuClear16
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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)
|
||||
|
||||
@ -299,17 +299,17 @@ static inline void MI_CpuClear16(void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuSend16(src, dest, size);
|
||||
i_miCpuSend16(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuRecv16
|
||||
Name: miCpuRecv16
|
||||
|
||||
Description: receive u16 data from fixed address
|
||||
16bit version
|
||||
@ -320,17 +320,17 @@ static inline void MI_CpuSend16(const void *src, volatile void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuRecv16(src, dest, size);
|
||||
i_miCpuRecv16(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuRecv16
|
||||
Name: miCpuRecv16
|
||||
|
||||
Description: pipe data from fixed address to fixed address.
|
||||
16bit version
|
||||
@ -341,17 +341,17 @@ static inline void MI_CpuRecv16(volatile const void *src, void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuPipe16(src, dest, size);
|
||||
i_miCpuPipe16(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuMove16
|
||||
Name: miCpuMove16
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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");
|
||||
|
||||
MIi_CpuMove16(src, dest, size);
|
||||
i_miCpuMove16(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuFind16
|
||||
Name: miCpuFind16
|
||||
|
||||
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.
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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)
|
||||
|
||||
@ -402,20 +402,20 @@ static inline void* MI_CpuFind16(const void *src, u16 data, u32 size)
|
||||
= 0 : mem1 equals 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(((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");
|
||||
|
||||
return MIi_CpuComp16(mem1, mem2, size);
|
||||
return i_miCpuComp16(mem1, mem2, size);
|
||||
}
|
||||
|
||||
//================================================================================
|
||||
// 32 byte unit version
|
||||
//================================================================================
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuFillFast
|
||||
Name: miCpuFillFast
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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)
|
||||
|
||||
@ -444,17 +444,17 @@ static inline void MI_CpuFillFast(void *dest, u32 data, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
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)
|
||||
|
||||
@ -463,15 +463,15 @@ static inline void MI_CpuCopyFast(const void *src, void *dest, u32 size)
|
||||
|
||||
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(((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)
|
||||
|
||||
@ -481,17 +481,17 @@ static inline void MI_CpuClearFast(void *dest, u32 size)
|
||||
|
||||
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(((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");
|
||||
|
||||
MIi_CpuSendFast(src, dest, size);
|
||||
i_miCpuSendFast(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuRecvFast
|
||||
Name: miCpuRecvFast
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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");
|
||||
|
||||
MIi_CpuRecvFast(src, dest, size);
|
||||
i_miCpuRecvFast(src, dest, size);
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuMoveFast
|
||||
Name: miCpuMoveFast
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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(((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");
|
||||
|
||||
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
|
||||
//================================================================================
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_CpuFill8
|
||||
Name: miCpuFill8
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
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)
|
||||
|
||||
@ -558,10 +558,10 @@ void MI_CpuFill8(void *dest, u8 data, u32 size);
|
||||
|
||||
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)
|
||||
|
||||
@ -571,10 +571,10 @@ void MI_CpuCopy8(const void *src, void *dest, u32 size);
|
||||
|
||||
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)
|
||||
|
||||
@ -586,10 +586,10 @@ void* MI_CpuFind8(const void *src, u8 data, u32 size);
|
||||
= 0 : mem1 equals 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)
|
||||
|
||||
@ -598,16 +598,16 @@ int MI_CpuComp8(const void *mem1, const void *mem2, u32 size);
|
||||
|
||||
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
|
||||
//================================================================================
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_ReadWord
|
||||
Name: miReadWord
|
||||
|
||||
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
|
||||
*---------------------------------------------------------------------------*/
|
||||
#ifndef SDK_ASM
|
||||
#define MI_ReadWord( adrs ) (*(vu32 *)(adrs))
|
||||
#define miReadWord( adrs ) (*(vu32 *)(adrs))
|
||||
#endif
|
||||
|
||||
/*---------------------------------------------------------------------------*
|
||||
Name: MI_WriteWord
|
||||
Name: miWriteWord
|
||||
|
||||
Description: write 32 bit data to specified adress
|
||||
|
||||
@ -630,7 +630,7 @@ static inline void MI_CpuClear8(void *dest, u32 size)
|
||||
Returns: None
|
||||
*---------------------------------------------------------------------------*/
|
||||
#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
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -649,10 +649,10 @@ static inline void MI_CpuClear8(void *dest, u32 size)
|
||||
|
||||
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)
|
||||
|
||||
@ -662,10 +662,10 @@ void MI_CpuFill(void *dest, u8 data, u32 size);
|
||||
|
||||
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)
|
||||
|
||||
@ -675,10 +675,10 @@ void MI_CpuCopy(const void *srcp, void *destp, u32 size);
|
||||
|
||||
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)
|
||||
|
||||
@ -687,26 +687,26 @@ void MI_CpuMove(const void *srcp, void *destp, u32 size);
|
||||
|
||||
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.
|
||||
// don't use in application thoughtlessly
|
||||
//================================================================================
|
||||
void MI_Copy16B(register const void *pSrc, register void *pDest);
|
||||
void MI_Copy32B(register const void *pSrc, register void *pDest);
|
||||
void MI_Copy36B(register const void *pSrc, register void *pDest);
|
||||
void MI_Copy48B(register const void *pSrc, register void *pDest);
|
||||
void MI_Copy64B(register const void *pSrc, register void *pDest);
|
||||
void MI_Copy128B(register const void *pSrc, register void *pDest);
|
||||
void miCopy16B(register const void *pSrc, register void *pDest);
|
||||
void miCopy32B(register const void *pSrc, register void *pDest);
|
||||
void miCopy36B(register const void *pSrc, register void *pDest);
|
||||
void miCopy48B(register const void *pSrc, register void *pDest);
|
||||
void miCopy64B(register const void *pSrc, register void *pDest);
|
||||
void miCopy128B(register const void *pSrc, register void *pDest);
|
||||
|
||||
void MI_Zero32B(register void *pDest);
|
||||
void MI_Zero36B(register void *pDest);
|
||||
void MI_Zero48B(register void *pDest);
|
||||
void MI_Zero64B(register void *pDest);
|
||||
void miZero32B(register void *pDest);
|
||||
void miZero36B(register void *pDest);
|
||||
void miZero48B(register void *pDest);
|
||||
void miZero64B(register void *pDest);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
|
||||
Loading…
Reference in New Issue
Block a user