.. | .. |
---|
22 | 22 | |
---|
23 | 23 | #include <linux/compiler.h> |
---|
24 | 24 | |
---|
| 25 | +/* __asmeq is not available on Kernel versions >= 4.20 */ |
---|
| 26 | +#ifndef __asmeq |
---|
| 27 | +/* |
---|
| 28 | + * This is used to ensure the compiler did actually allocate the register we |
---|
| 29 | + * asked it for some inline assembly sequences. Apparently we can't trust the |
---|
| 30 | + * compiler from one version to another so a bit of paranoia won't hurt. This |
---|
| 31 | + * string is meant to be concatenated with the inline asm string and will |
---|
| 32 | + * cause compilation to stop on mismatch. (for details, see gcc PR 15089) |
---|
| 33 | + */ |
---|
| 34 | +#define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t" |
---|
| 35 | +#endif |
---|
| 36 | + |
---|
25 | 37 | static noinline u64 invoke_smc_fid(u64 function_id, |
---|
26 | 38 | u64 arg0, u64 arg1, u64 arg2) |
---|
27 | 39 | { |
---|