⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memcpy.s

📁 linux-2.6.15.6
💻 S
字号:
/* *  linux/arch/m32r/lib/memcpy.S * *  Copyright (C) 2001  Hiroyuki Kondo, and Hirokazu Takata *  Copyright (C) 2004  Hirokazu Takata * *  void *memcopy(void *dst, const void *src, int n); * *        dst: r0 *        src: r1 *        n  : r2 *//* $Id$ */	.text#include <linux/config.h>#include <linux/linkage.h>#include <asm/assembler.h>#ifdef CONFIG_ISA_DUAL_ISSUE	.textENTRY(memcpy)memcopy:	mv	r4, r0		    ||	mv	r7, r0	or	r7, r1		    ||	cmpz	r2	jc	r14		    ||	cmpeq	r0, r1	; return if r2=0	jc	r14					; return if r0=r1	and3	r7, r7, #3	bnez	r7, byte_copy	srl3	r3, r2, #2	and3	r2, r2, #3	beqz	r3, byte_copy	addi	r4, #-4word_copy:	ld	r7, @r1+	    ||	addi	r3, #-1	st	r7, @+r4	    ||	cmpz	r2	bnez	r3, word_copy	addi	r4, #4		    ||	jc	r14	; return if r2=0#if defined(CONFIG_ISA_M32R2)byte_copy:	ldb	r7, @r1		    ||	addi	r1, #1	addi	r2, #-1		    ||	stb	r7, @r4+	bnez	r2, byte_copy#elif defined(CONFIG_ISA_M32R)byte_copy:	ldb	r7, @r1		    ||	addi	r1, #1	addi	r2, #-1		    ||	stb	r7, @r4	addi	r4, #1	bnez	r2, byte_copy#else#error unknown isa configuration#endifend_memcopy:	jmp	r14#else /* not CONFIG_ISA_DUAL_ISSUE */	.textENTRY(memcpy)memcopy:	mv	r4, r0	mv	r7, r0	or	r7, r1	beq	r0, r1, end_memcopy	beqz	r2, end_memcopy	and3	r7, r7, #3	bnez	r7, byte_copy	srl3	r3, r2, #2	and3	r2, r2, #3	beqz	r3, byte_copy	addi	r4, #-4word_copy:	ld	r7, @r1+	addi	r3, #-1	st	r7, @+r4	bnez	r3, word_copy	beqz	r2, end_memcopy	addi	r4, #4byte_copy:	ldb	r7, @r1	addi	r1, #1	addi	r2, #-1	stb	r7, @r4	addi	r4, #1	bnez	r2, byte_copyend_memcopy:	jmp	r14#endif /* not CONFIG_ISA_DUAL_ISSUE */	.end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -