Commit 4afeb670 authored by Heiko Carstens's avatar Heiko Carstens Committed by Vasily Gorbik
Browse files

s390/alternatives: use instructions instead of byte patterns



Use readable nop instructions within the code which generates
the padding areas, instead of unreadable byte patterns.

The generated code is identical.

Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent f09354ff
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -37,9 +37,15 @@
 * a 2-byte nop if the size of the area is not divisible by 6.
 */
.macro alt_pad_fill bytes
	.fill	( \bytes ) / 6, 6, 0xc0040000
	.fill	( \bytes ) % 6 / 4, 4, 0x47000000
	.fill	( \bytes ) % 6 % 4 / 2, 2, 0x0700
	.rept	( \bytes ) / 6
	jgnop	.
	.endr
	.rept	( \bytes ) % 6 / 4
	nop
	.endr
	.rept	( \bytes ) % 6 % 4 / 2
	nopr
	.endr
.endm

/*
+11 −4
Original line number Diff line number Diff line
@@ -71,11 +71,18 @@ void apply_alternatives(struct alt_instr *start, struct alt_instr *end);
	".if " oldinstr_pad_len(num) " > 6\n"				\
	"\tjg " e_oldinstr_pad_end "f\n"				\
	"6620:\n"							\
	"\t.fill (" oldinstr_pad_len(num) " - (6620b-662b)) / 2, 2, 0x0700\n" \
	"\t.rept (" oldinstr_pad_len(num) " - (6620b-662b)) / 2\n"	\
	"\tnopr\n"							\
	".else\n"							\
	"\t.fill " oldinstr_pad_len(num) " / 6, 6, 0xc0040000\n"	\
	"\t.fill " oldinstr_pad_len(num) " %% 6 / 4, 4, 0x47000000\n"	\
	"\t.fill " oldinstr_pad_len(num) " %% 6 %% 4 / 2, 2, 0x0700\n"	\
	"\t.rept " oldinstr_pad_len(num) " / 6\n"			\
	"\t.jgnop .\n"							\
	"\t.endr\n"							\
	"\t.rept " oldinstr_pad_len(num) " %% 6 / 4\n"			\
	"\tnop\n"							\
	"\t.endr\n"							\
	"\t.rept " oldinstr_pad_len(num) " %% 6 %% 4 / 2\n"		\
	"\tnopr\n"							\
	".endr\n"							\
	".endif\n"

#define OLDINSTR(oldinstr, num)						\