arch/powerpc/kernel/vdso/vgetrandom-chacha.S

Source file repositories/reference/linux-study-clean/arch/powerpc/kernel/vdso/vgetrandom-chacha.S

File Facts

System
Linux kernel
Corpus path
arch/powerpc/kernel/vdso/vgetrandom-chacha.S
Extension
.S
Size
7505 bytes
Lines
366
Domain
Architecture Layer
Bucket
arch/powerpc
Inferred role
Architecture Layer: arch/powerpc
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

#include <linux/linkage.h>

#include <asm/ppc_asm.h>

#define	dst_bytes	r3
#define	key		r4
#define	counter		r5
#define	nblocks		r6

#define	idx_r0		r0
#define	val4		r4

#define	const0		0x61707865
#define	const1		0x3320646e
#define	const2		0x79622d32
#define	const3		0x6b206574

#define	key0		r5
#define	key1		r6
#define	key2		r7
#define	key3		r8
#define	key4		r9
#define	key5		r10
#define	key6		r11
#define	key7		r12

#define	counter0	r14
#define	counter1	r15

#define	state0		r16
#define	state1		r17
#define	state2		r18
#define	state3		r19
#define	state4		r20
#define	state5		r21
#define	state6		r22
#define	state7		r23
#define	state8		r24
#define	state9		r25
#define	state10		r26
#define	state11		r27
#define	state12		r28
#define	state13		r29
#define	state14		r30
#define	state15		r31

.macro quarterround4 a1 b1 c1 d1 a2 b2 c2 d2 a3 b3 c3 d3 a4 b4 c4 d4
	add	\a1, \a1, \b1
	add	\a2, \a2, \b2
	add	\a3, \a3, \b3
	add	\a4, \a4, \b4
	xor	\d1, \d1, \a1
	xor	\d2, \d2, \a2
	xor	\d3, \d3, \a3
	xor	\d4, \d4, \a4
	rotlwi	\d1, \d1, 16
	rotlwi	\d2, \d2, 16
	rotlwi	\d3, \d3, 16
	rotlwi	\d4, \d4, 16
	add	\c1, \c1, \d1
	add	\c2, \c2, \d2
	add	\c3, \c3, \d3
	add	\c4, \c4, \d4
	xor	\b1, \b1, \c1
	xor	\b2, \b2, \c2
	xor	\b3, \b3, \c3
	xor	\b4, \b4, \c4
	rotlwi	\b1, \b1, 12
	rotlwi	\b2, \b2, 12
	rotlwi	\b3, \b3, 12

Annotation

Implementation Notes