arch/csky/abiv2/strcpy.S

Source file repositories/reference/linux-study-clean/arch/csky/abiv2/strcpy.S

File Facts

System
Linux kernel
Corpus path
arch/csky/abiv2/strcpy.S
Extension
.S
Size
1498 bytes
Lines
124
Domain
Architecture Layer
Bucket
arch/csky
Inferred role
Architecture Layer: arch/csky
Status
atlas-only

Why This File Exists

CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.

Dependency Surface

Detected Declarations

Annotated Snippet

// Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.

#include <linux/linkage.h>
#include "sysdep.h"

ENTRY(strcpy)
	mov	a3, a0
	/* Check if the src addr is aligned.  */
        andi    t0, a1, 3
        bnez	t0, 11f
1:
	/* Check if all the bytes in the word are not zero.  */
	ldw	a2, (a1)
	tstnbz	a2
	bf	9f
	stw	a2, (a3)

	ldw	a2, (a1, 4)
	tstnbz	a2
	bf	2f
	stw	a2, (a3, 4)

	ldw	a2, (a1, 8)
	tstnbz	a2
	bf	3f
	stw	a2, (a3, 8)

	ldw	a2, (a1, 12)
	tstnbz	a2
	bf	4f
	stw	a2, (a3, 12)

	ldw	a2, (a1, 16)
	tstnbz	a2
	bf	5f
	stw	a2, (a3, 16)

	ldw	a2, (a1, 20)
	tstnbz	a2
	bf	6f
	stw	a2, (a3, 20)

	ldw	a2, (a1, 24)
	tstnbz	a2
	bf	7f
	stw	a2, (a3, 24)

	ldw	a2, (a1, 28)
	tstnbz	a2
	bf	8f
	stw	a2, (a3, 28)

	addi	a3, 32
	addi	a1, 32
	br	1b


2:
	addi	a3, 4
	br	9f

3:
	addi	a3, 8
	br	9f

4:
	addi	a3, 12
	br	9f

5:

Annotation

Implementation Notes