@@ -36,7 +36,7 @@ void kvm_inject_undef32(struct kvm_vcpu *vcpu);
36
36
void kvm_inject_dabt32 (struct kvm_vcpu * vcpu , unsigned long addr );
37
37
void kvm_inject_pabt32 (struct kvm_vcpu * vcpu , unsigned long addr );
38
38
39
- static inline bool vcpu_el1_is_32bit (struct kvm_vcpu * vcpu )
39
+ static __always_inline bool vcpu_el1_is_32bit (struct kvm_vcpu * vcpu )
40
40
{
41
41
return !(vcpu -> arch .hcr_el2 & HCR_RW );
42
42
}
@@ -127,7 +127,7 @@ static inline void vcpu_set_vsesr(struct kvm_vcpu *vcpu, u64 vsesr)
127
127
vcpu -> arch .vsesr_el2 = vsesr ;
128
128
}
129
129
130
- static inline unsigned long * vcpu_pc (const struct kvm_vcpu * vcpu )
130
+ static __always_inline unsigned long * vcpu_pc (const struct kvm_vcpu * vcpu )
131
131
{
132
132
return (unsigned long * )& vcpu_gp_regs (vcpu )-> regs .pc ;
133
133
}
@@ -153,17 +153,17 @@ static inline void vcpu_write_elr_el1(const struct kvm_vcpu *vcpu, unsigned long
153
153
* __vcpu_elr_el1 (vcpu ) = v ;
154
154
}
155
155
156
- static inline unsigned long * vcpu_cpsr (const struct kvm_vcpu * vcpu )
156
+ static __always_inline unsigned long * vcpu_cpsr (const struct kvm_vcpu * vcpu )
157
157
{
158
158
return (unsigned long * )& vcpu_gp_regs (vcpu )-> regs .pstate ;
159
159
}
160
160
161
- static inline bool vcpu_mode_is_32bit (const struct kvm_vcpu * vcpu )
161
+ static __always_inline bool vcpu_mode_is_32bit (const struct kvm_vcpu * vcpu )
162
162
{
163
163
return !!(* vcpu_cpsr (vcpu ) & PSR_MODE32_BIT );
164
164
}
165
165
166
- static inline bool kvm_condition_valid (const struct kvm_vcpu * vcpu )
166
+ static __always_inline bool kvm_condition_valid (const struct kvm_vcpu * vcpu )
167
167
{
168
168
if (vcpu_mode_is_32bit (vcpu ))
169
169
return kvm_condition_valid32 (vcpu );
@@ -181,13 +181,13 @@ static inline void vcpu_set_thumb(struct kvm_vcpu *vcpu)
181
181
* coming from a read of ESR_EL2. Otherwise, it may give the wrong result on
182
182
* AArch32 with banked registers.
183
183
*/
184
- static inline unsigned long vcpu_get_reg (const struct kvm_vcpu * vcpu ,
184
+ static __always_inline unsigned long vcpu_get_reg (const struct kvm_vcpu * vcpu ,
185
185
u8 reg_num )
186
186
{
187
187
return (reg_num == 31 ) ? 0 : vcpu_gp_regs (vcpu )-> regs .regs [reg_num ];
188
188
}
189
189
190
- static inline void vcpu_set_reg (struct kvm_vcpu * vcpu , u8 reg_num ,
190
+ static __always_inline void vcpu_set_reg (struct kvm_vcpu * vcpu , u8 reg_num ,
191
191
unsigned long val )
192
192
{
193
193
if (reg_num != 31 )
@@ -264,12 +264,12 @@ static inline bool vcpu_mode_priv(const struct kvm_vcpu *vcpu)
264
264
return mode != PSR_MODE_EL0t ;
265
265
}
266
266
267
- static inline u32 kvm_vcpu_get_hsr (const struct kvm_vcpu * vcpu )
267
+ static __always_inline u32 kvm_vcpu_get_hsr (const struct kvm_vcpu * vcpu )
268
268
{
269
269
return vcpu -> arch .fault .esr_el2 ;
270
270
}
271
271
272
- static inline int kvm_vcpu_get_condition (const struct kvm_vcpu * vcpu )
272
+ static __always_inline int kvm_vcpu_get_condition (const struct kvm_vcpu * vcpu )
273
273
{
274
274
u32 esr = kvm_vcpu_get_hsr (vcpu );
275
275
@@ -279,12 +279,12 @@ static inline int kvm_vcpu_get_condition(const struct kvm_vcpu *vcpu)
279
279
return -1 ;
280
280
}
281
281
282
- static inline unsigned long kvm_vcpu_get_hfar (const struct kvm_vcpu * vcpu )
282
+ static __always_inline unsigned long kvm_vcpu_get_hfar (const struct kvm_vcpu * vcpu )
283
283
{
284
284
return vcpu -> arch .fault .far_el2 ;
285
285
}
286
286
287
- static inline phys_addr_t kvm_vcpu_get_fault_ipa (const struct kvm_vcpu * vcpu )
287
+ static __always_inline phys_addr_t kvm_vcpu_get_fault_ipa (const struct kvm_vcpu * vcpu )
288
288
{
289
289
return ((phys_addr_t )vcpu -> arch .fault .hpfar_el2 & HPFAR_MASK ) << 8 ;
290
290
}
@@ -299,7 +299,7 @@ static inline u32 kvm_vcpu_hvc_get_imm(const struct kvm_vcpu *vcpu)
299
299
return kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_xVC_IMM_MASK ;
300
300
}
301
301
302
- static inline bool kvm_vcpu_dabt_isvalid (const struct kvm_vcpu * vcpu )
302
+ static __always_inline bool kvm_vcpu_dabt_isvalid (const struct kvm_vcpu * vcpu )
303
303
{
304
304
return !!(kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_ISV );
305
305
}
@@ -319,17 +319,17 @@ static inline bool kvm_vcpu_dabt_issf(const struct kvm_vcpu *vcpu)
319
319
return !!(kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_SF );
320
320
}
321
321
322
- static inline int kvm_vcpu_dabt_get_rd (const struct kvm_vcpu * vcpu )
322
+ static __always_inline int kvm_vcpu_dabt_get_rd (const struct kvm_vcpu * vcpu )
323
323
{
324
324
return (kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_SRT_MASK ) >> ESR_ELx_SRT_SHIFT ;
325
325
}
326
326
327
- static inline bool kvm_vcpu_dabt_iss1tw (const struct kvm_vcpu * vcpu )
327
+ static __always_inline bool kvm_vcpu_dabt_iss1tw (const struct kvm_vcpu * vcpu )
328
328
{
329
329
return !!(kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_S1PTW );
330
330
}
331
331
332
- static inline bool kvm_vcpu_dabt_iswrite (const struct kvm_vcpu * vcpu )
332
+ static __always_inline bool kvm_vcpu_dabt_iswrite (const struct kvm_vcpu * vcpu )
333
333
{
334
334
return !!(kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_WNR ) ||
335
335
kvm_vcpu_dabt_iss1tw (vcpu ); /* AF/DBM update */
@@ -340,18 +340,18 @@ static inline bool kvm_vcpu_dabt_is_cm(const struct kvm_vcpu *vcpu)
340
340
return !!(kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_CM );
341
341
}
342
342
343
- static inline unsigned int kvm_vcpu_dabt_get_as (const struct kvm_vcpu * vcpu )
343
+ static __always_inline unsigned int kvm_vcpu_dabt_get_as (const struct kvm_vcpu * vcpu )
344
344
{
345
345
return 1 << ((kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_SAS ) >> ESR_ELx_SAS_SHIFT );
346
346
}
347
347
348
348
/* This one is not specific to Data Abort */
349
- static inline bool kvm_vcpu_trap_il_is32bit (const struct kvm_vcpu * vcpu )
349
+ static __always_inline bool kvm_vcpu_trap_il_is32bit (const struct kvm_vcpu * vcpu )
350
350
{
351
351
return !!(kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_IL );
352
352
}
353
353
354
- static inline u8 kvm_vcpu_trap_get_class (const struct kvm_vcpu * vcpu )
354
+ static __always_inline u8 kvm_vcpu_trap_get_class (const struct kvm_vcpu * vcpu )
355
355
{
356
356
return ESR_ELx_EC (kvm_vcpu_get_hsr (vcpu ));
357
357
}
@@ -361,17 +361,17 @@ static inline bool kvm_vcpu_trap_is_iabt(const struct kvm_vcpu *vcpu)
361
361
return kvm_vcpu_trap_get_class (vcpu ) == ESR_ELx_EC_IABT_LOW ;
362
362
}
363
363
364
- static inline u8 kvm_vcpu_trap_get_fault (const struct kvm_vcpu * vcpu )
364
+ static __always_inline u8 kvm_vcpu_trap_get_fault (const struct kvm_vcpu * vcpu )
365
365
{
366
366
return kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_FSC ;
367
367
}
368
368
369
- static inline u8 kvm_vcpu_trap_get_fault_type (const struct kvm_vcpu * vcpu )
369
+ static __always_inline u8 kvm_vcpu_trap_get_fault_type (const struct kvm_vcpu * vcpu )
370
370
{
371
371
return kvm_vcpu_get_hsr (vcpu ) & ESR_ELx_FSC_TYPE ;
372
372
}
373
373
374
- static inline bool kvm_vcpu_dabt_isextabt (const struct kvm_vcpu * vcpu )
374
+ static __always_inline bool kvm_vcpu_dabt_isextabt (const struct kvm_vcpu * vcpu )
375
375
{
376
376
switch (kvm_vcpu_trap_get_fault (vcpu )) {
377
377
case FSC_SEA :
@@ -390,7 +390,7 @@ static inline bool kvm_vcpu_dabt_isextabt(const struct kvm_vcpu *vcpu)
390
390
}
391
391
}
392
392
393
- static inline int kvm_vcpu_sys_get_rt (struct kvm_vcpu * vcpu )
393
+ static __always_inline int kvm_vcpu_sys_get_rt (struct kvm_vcpu * vcpu )
394
394
{
395
395
u32 esr = kvm_vcpu_get_hsr (vcpu );
396
396
return ESR_ELx_SYS64_ISS_RT (esr );
@@ -504,7 +504,7 @@ static inline unsigned long vcpu_data_host_to_guest(struct kvm_vcpu *vcpu,
504
504
return data ; /* Leave LE untouched */
505
505
}
506
506
507
- static inline void kvm_skip_instr (struct kvm_vcpu * vcpu , bool is_wide_instr )
507
+ static __always_inline void kvm_skip_instr (struct kvm_vcpu * vcpu , bool is_wide_instr )
508
508
{
509
509
if (vcpu_mode_is_32bit (vcpu ))
510
510
kvm_skip_instr32 (vcpu , is_wide_instr );
@@ -519,7 +519,7 @@ static inline void kvm_skip_instr(struct kvm_vcpu *vcpu, bool is_wide_instr)
519
519
* Skip an instruction which has been emulated at hyp while most guest sysregs
520
520
* are live.
521
521
*/
522
- static inline void __hyp_text __kvm_skip_instr (struct kvm_vcpu * vcpu )
522
+ static __always_inline void __hyp_text __kvm_skip_instr (struct kvm_vcpu * vcpu )
523
523
{
524
524
* vcpu_pc (vcpu ) = read_sysreg_el2 (SYS_ELR );
525
525
vcpu -> arch .ctxt .gp_regs .regs .pstate = read_sysreg_el2 (SYS_SPSR );
0 commit comments