brintos

brintos / linux-shallow public Read only

0
0
Text · 1.0 KiB · 22e9204 Raw
83 lines · plain
1// SPDX-License-Identifier: GPL-2.0+2 3/*4 * Copyright 2019, Michael Ellerman, IBM Corp.5 */6 7#include <ppc-asm.h>8 9	.data10 11jump_table:12	.long	0x013	.long	(.Lstate_1 - .Lstate_0)14	.long	(.Lstate_2 - .Lstate_0)15	.long	(.Lstate_3 - .Lstate_0)16	.long	(.Lstate_4 - .Lstate_0)17	.long	(.Lstate_5 - .Lstate_0)18	.long	(.Lstate_6 - .Lstate_0)19	.long	(.Lstate_7 - .Lstate_0)20 21	.text22 23#define ITER_SHIFT	3124 25.macro state number26	.balign	3227.Lstate_\number:28	.if	\number==729	li	r3, 030	.else31	li	r3, \number+132	.endif33	b	.Lloop34.endm35 36FUNC_START(pattern_cache_loop)37	li	r3, 038	li	r4, 139	sldi	r4, r4, ITER_SHIFT40 41.Lloop:	cmpdi	r4, 042	beqlr43 44	addi	r4, r4, -145 46	ld	r6, jump_table@got(%r2)47	sldi	r5, r3, 248	lwax	r6, r5, r649	ld	r7, .Lstate_0@got(%r2)50	add	r6, r6, r751	mtctr	r652	bctr53 54	state	055	state	156	state	257	state	358	state	459	state	560	state	661	state	762 63FUNC_END(pattern_cache_loop)64 65 66FUNC_START(indirect_branch_loop)67	li	r3, 168	sldi	r3, r3, ITER_SHIFT69 701:	cmpdi	r3, 071	beqlr72 73	addi	r3, r3, -174 75	ld	r4, 2f@got(%r2)76	mtctr	r477	bctr78 79	.balign 32802:	b	1b81 82FUNC_END(indirect_branch_loop)83