| .. | .. |
|---|
| 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 | { |
|---|