__arm_smccc_hvc(9)
πΈ __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 anarm_smccc_quirk, orNULLwhen 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 β¨
- Kernel file
./include/linux/arm-smccc.h arm_smccc_1_1_get_conduit(9)arm_smccc_get_version(9)arm_smccc_get_soc_id_version(9)arm_smccc_get_soc_id_revision(9)struct arm_smccc_res(9)struct arm_smccc_1_2_regs(9)arm_smccc_1_2_hvc(9)arm_smccc_1_2_smc(9)struct arm_smccc_quirk(9)__arm_smccc_smc(9)
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
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms