brintos

brintos / linux-shallow public Read only

0
0
Text · 4.2 KiB · 4866a3a Raw
272 lines · plain
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright 2014, Michael Ellerman, IBM Corp.4 */5 6#include <ppc-asm.h>7 8	.text9 10FUNC_START(core_busy_loop)11	stdu	%r1, -168(%r1)12	std	r14, 160(%r1)13	std	r15, 152(%r1)14	std	r16, 144(%r1)15	std	r17, 136(%r1)16	std	r18, 128(%r1)17	std	r19, 120(%r1)18	std	r20, 112(%r1)19	std	r21, 104(%r1)20	std	r22, 96(%r1)21	std	r23, 88(%r1)22	std	r24, 80(%r1)23	std	r25, 72(%r1)24	std	r26, 64(%r1)25	std	r27, 56(%r1)26	std	r28, 48(%r1)27	std	r29, 40(%r1)28	std	r30, 32(%r1)29	std	r31, 24(%r1)30 31	li	 r3, 0x303032	std	 r3, -96(%r1)33	li	 r4, 0x404034	std	 r4, -104(%r1)35	li	 r5, 0x505036	std	 r5, -112(%r1)37	li	 r6, 0x606038	std	 r6, -120(%r1)39	li	 r7, 0x707040	std	 r7, -128(%r1)41	li	 r8, 0x080842	std	 r8, -136(%r1)43	li	 r9, 0x090944	std	 r9, -144(%r1)45	li	r10, 0x101046	std	r10, -152(%r1)47	li	r11, 0x111148	std	r11, -160(%r1)49	li	r14, 0x141450	std	r14, -168(%r1)51	li	r15, 0x151552	std	r15, -176(%r1)53	li	r16, 0x161654	std	r16, -184(%r1)55	li	r17, 0x171756	std	r17, -192(%r1)57	li	r18, 0x181858	std	r18, -200(%r1)59	li	r19, 0x191960	std	r19, -208(%r1)61	li	r20, 0x202062	std	r20, -216(%r1)63	li	r21, 0x212164	std	r21, -224(%r1)65	li	r22, 0x222266	std	r22, -232(%r1)67	li	r23, 0x232368	std	r23, -240(%r1)69	li	r24, 0x242470	std	r24, -248(%r1)71	li	r25, 0x252572	std	r25, -256(%r1)73	li	r26, 0x262674	std	r26, -264(%r1)75	li	r27, 0x272776	std	r27, -272(%r1)77	li	r28, 0x282878	std	r28, -280(%r1)79	li	r29, 0x292980	std	r29, -288(%r1)81	li	r30, 0x303082	li	r31, 0x313183 84	li	r3, 0850:	addi	r3, r3, 186	cmpwi	r3, 10087	blt	0b88 89	/* Return 1 (fail) unless we get through all the checks */90	li	r3, 191 92	/* Check none of our registers have been corrupted */93	cmpwi	r4,  0x404094	bne	1f95	cmpwi	r5,  0x505096	bne	1f97	cmpwi	r6,  0x606098	bne	1f99	cmpwi	r7,  0x7070100	bne	1f101	cmpwi	r8,  0x0808102	bne	1f103	cmpwi	r9,  0x0909104	bne	1f105	cmpwi	r10, 0x1010106	bne	1f107	cmpwi	r11, 0x1111108	bne	1f109	cmpwi	r14, 0x1414110	bne	1f111	cmpwi	r15, 0x1515112	bne	1f113	cmpwi	r16, 0x1616114	bne	1f115	cmpwi	r17, 0x1717116	bne	1f117	cmpwi	r18, 0x1818118	bne	1f119	cmpwi	r19, 0x1919120	bne	1f121	cmpwi	r20, 0x2020122	bne	1f123	cmpwi	r21, 0x2121124	bne	1f125	cmpwi	r22, 0x2222126	bne	1f127	cmpwi	r23, 0x2323128	bne	1f129	cmpwi	r24, 0x2424130	bne	1f131	cmpwi	r25, 0x2525132	bne	1f133	cmpwi	r26, 0x2626134	bne	1f135	cmpwi	r27, 0x2727136	bne	1f137	cmpwi	r28, 0x2828138	bne	1f139	cmpwi	r29, 0x2929140	bne	1f141	cmpwi	r30, 0x3030142	bne	1f143	cmpwi	r31, 0x3131144	bne	1f145 146	/* Load junk into all our registers before we reload them from the stack. */147	li	r3,  0xde148	li	r4,  0xad149	li	r5,  0xbe150	li	r6,  0xef151	li	r7,  0xde152	li	r8,  0xad153	li	r9,  0xbe154	li	r10, 0xef155	li	r11, 0xde156	li	r14, 0xad157	li	r15, 0xbe158	li	r16, 0xef159	li	r17, 0xde160	li	r18, 0xad161	li	r19, 0xbe162	li	r20, 0xef163	li	r21, 0xde164	li	r22, 0xad165	li	r23, 0xbe166	li	r24, 0xef167	li	r25, 0xde168	li	r26, 0xad169	li	r27, 0xbe170	li	r28, 0xef171	li	r29, 0xdd172 173	ld	r3,	-96(%r1)174	cmpwi	r3,  0x3030175	bne	1f176	ld	r4,	-104(%r1)177	cmpwi	r4,  0x4040178	bne	1f179	ld	r5,	-112(%r1)180	cmpwi	r5,  0x5050181	bne	1f182	ld	r6,	-120(%r1)183	cmpwi	r6,  0x6060184	bne	1f185	ld	r7,	-128(%r1)186	cmpwi	r7,  0x7070187	bne	1f188	ld	r8,	-136(%r1)189	cmpwi	r8,  0x0808190	bne	1f191	ld	r9,	-144(%r1)192	cmpwi	r9,  0x0909193	bne	1f194	ld	r10, -152(%r1)195	cmpwi	r10, 0x1010196	bne	1f197	ld	r11, -160(%r1)198	cmpwi	r11, 0x1111199	bne	1f200	ld	r14, -168(%r1)201	cmpwi	r14, 0x1414202	bne	1f203	ld	r15, -176(%r1)204	cmpwi	r15, 0x1515205	bne	1f206	ld	r16, -184(%r1)207	cmpwi	r16, 0x1616208	bne	1f209	ld	r17, -192(%r1)210	cmpwi	r17, 0x1717211	bne	1f212	ld	r18, -200(%r1)213	cmpwi	r18, 0x1818214	bne	1f215	ld	r19, -208(%r1)216	cmpwi	r19, 0x1919217	bne	1f218	ld	r20, -216(%r1)219	cmpwi	r20, 0x2020220	bne	1f221	ld	r21, -224(%r1)222	cmpwi	r21, 0x2121223	bne	1f224	ld	r22, -232(%r1)225	cmpwi	r22, 0x2222226	bne	1f227	ld	r23, -240(%r1)228	cmpwi	r23, 0x2323229	bne	1f230	ld	r24, -248(%r1)231	cmpwi	r24, 0x2424232	bne	1f233	ld	r25, -256(%r1)234	cmpwi	r25, 0x2525235	bne	1f236	ld	r26, -264(%r1)237	cmpwi	r26, 0x2626238	bne	1f239	ld	r27, -272(%r1)240	cmpwi	r27, 0x2727241	bne	1f242	ld	r28, -280(%r1)243	cmpwi	r28, 0x2828244	bne	1f245	ld	r29, -288(%r1)246	cmpwi	r29, 0x2929247	bne	1f248 249	/* Load 0 (success) to return */250	li	r3, 0251 2521:	ld	r14, 160(%r1)253	ld	r15, 152(%r1)254	ld	r16, 144(%r1)255	ld	r17, 136(%r1)256	ld	r18, 128(%r1)257	ld	r19, 120(%r1)258	ld	r20, 112(%r1)259	ld	r21, 104(%r1)260	ld	r22, 96(%r1)261	ld	r23, 88(%r1)262	ld	r24, 80(%r1)263	ld	r25, 72(%r1)264	ld	r26, 64(%r1)265	ld	r27, 56(%r1)266	ld	r28, 48(%r1)267	ld	r29, 40(%r1)268	ld	r30, 32(%r1)269	ld	r31, 24(%r1)270	addi	%r1, %r1, 168271	blr272