__arm_smccc_hvc(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 __arm_smccc_hvc β€” Kernel API Manual, section 9 🌸

okay bestie, sit down, we're learning how the kernel literally calls up its firmware today πŸ’… this is the page for __arm_smccc_hvc(9), and honestly? it's giving "the phone call your whole system depends on" energy πŸ”₯

✨ NAME ✨

__arm_smccc_hvc β€” make HVC calls. and yeah, @a0-a7 are the arguments you pass in registers 0 to 7 πŸŽ€


✨ SYNOPSIS ✨

void __arm_smccc_hvc (unsigned long a0 , unsigned long a1 , unsigned long a2 , unsigned long a3 , unsigned long a4 , unsigned long a5 , unsigned long a6 , unsigned long a7 , struct arm_smccc_res *res , struct arm_smccc_quirk *quirk );

like, yes, it's void β€” it doesn't hand you a return value back directly, it hands it back through res 😌 no cap.


✨ ARGUMENTS ✨

  • a0 β€” -- undescribed -- πŸ™ˆ (the docs said nothing, so I say nothing. mystery icon behaviour.)
  • a1 β€” -- undescribed -- πŸ™ˆ
  • a2 β€” -- undescribed -- πŸ™ˆ
  • a3 β€” -- undescribed -- πŸ™ˆ
  • a4 β€” -- undescribed -- πŸ™ˆ
  • a5 β€” -- undescribed -- πŸ™ˆ
  • a6 β€” -- undescribed -- πŸ™ˆ
  • a7 β€” -- undescribed -- πŸ™ˆ (the whole squad is undocumented up here, and that's just how it is 🫢)
  • res β€” the result values, fresh out of registers 0 to 3 ✨
  • quirk β€” points to an arm_smccc_quirk, or NULL when no quirks are required. NULL = no special behaviour, we're being normal today πŸŽ€

✨ DESCRIPTION ✨

so the way this works πŸ‘‘ β€” this function is what you use to make HVC calls following SMC Calling Convention. literally its whole job.

the content of the supplied param gets copied to registers 0 to 7 prior to the HVC instruction πŸ¦‹ then, on return from the HVC instruction, the return values are updated with the content from register 0 to 3. in-and-out, clean, iconic.

and then there's the optional quirk structure β€” it provides vendor specific behavior πŸ’« iykyk.

ngl if you're reaching for the quirk pointer, something is vendor-specific and probably weird. that's the vibe, bestie. that's the whole reason it exists.

✨ SEE ALSO ✨

go read __arm_smccc_smc(9) too, fr fr, it's the sibling πŸ‘―β€β™€οΈ


and that's the page!! πŸ₯³ this little gem lives in ./include/linux and it's stamped October 2026 β€” so mark your calendars, bestie, the future is now πŸ’– stay hydrated, keep your registers straight, and slay βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from