paravirt-spinlocks.c 830 B

12345678910111213141516171819202122232425262728293031323334
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Split spinlock implementation out into its own file, so it can be
  4. * compiled in a FTRACE-compatible way.
  5. */
  6. #include <linux/spinlock.h>
  7. #include <linux/export.h>
  8. #include <linux/jump_label.h>
  9. #include <asm/paravirt.h>
  10. __visible void __native_queued_spin_unlock(struct qspinlock *lock)
  11. {
  12. native_queued_spin_unlock(lock);
  13. }
  14. PV_CALLEE_SAVE_REGS_THUNK(__native_queued_spin_unlock);
  15. bool pv_is_native_spin_unlock(void)
  16. {
  17. return pv_ops.lock.queued_spin_unlock.func ==
  18. __raw_callee_save___native_queued_spin_unlock;
  19. }
  20. __visible bool __native_vcpu_is_preempted(long cpu)
  21. {
  22. return false;
  23. }
  24. PV_CALLEE_SAVE_REGS_THUNK(__native_vcpu_is_preempted);
  25. bool pv_is_native_vcpu_is_preempted(void)
  26. {
  27. return pv_ops.lock.vcpu_is_preempted.func ==
  28. __raw_callee_save___native_vcpu_is_preempted;
  29. }