Lines Matching +full:smp +full:- +full:offset
1 /* SPDX-License-Identifier: GPL-2.0 */
13 * Alternative inline assembly for SMP.
18 * SMP alternatives use the same data structures as the other
20 * UP system running a SMP kernel. The existing apply_alternatives()
21 * works fine for patching a SMP kernel for UP.
23 * The SMP alternative tables can be kept after boot and contain both
24 * UP and SMP versions of the instructions to allow switching back to
25 * SMP at runtime, when hotplugging in a new CPU, which is especially
37 ".long 671f - .\n" /* offset */ \
50 s32 repl_offset; /* offset to replacement instruction */
54 u8 padlen; /* length of build-time padding */
92 #define alt_slen "662b-661b"
93 #define alt_pad_len alt_end_marker"b-662b"
94 #define alt_total_slen alt_end_marker"b-661b"
95 #define alt_rlen(num) e_replacement(num)"f-"b_replacement(num)"f"
99 ".skip -(((" alt_rlen(num) ")-(" alt_slen ")) > 0) * " \
100 "((" alt_rlen(num) ")-(" alt_slen ")),0x90\n"
110 * The additional "-" is needed because gas uses a "true" value of -1.
112 #define alt_max_short(a, b) "((" a ") ^ (((" a ") ^ (" b ")) & -(-((" a ") < (" b ")))))"
120 ".skip -((" alt_max_short(alt_rlen(num1), alt_rlen(num2)) " - (" alt_slen ")) > 0) * " \
121 "(" alt_max_short(alt_rlen(num1), alt_rlen(num2)) " - (" alt_slen ")), 0x90\n" \
125 " .long 661b - .\n" /* label */ \
126 " .long " b_replacement(num)"f - .\n" /* new instruction */ \