Narrows the scope of visible symbols to where they're actually used. Also makes it easier to see true globals in source files (ones used from multiple translation units)
Provides the same assembly output while using the standardized interface e.g. 0000000000000000 <set_priv_smc_in_progress>: 0: 90000000 adrp x0, 0 <set_priv_smc_in_progress> 4: 91000000 add x0, x0, #0x0 8: 52800022 mov w2, #0x1 // #1 c: d503201f nop 10: 085ffc01 ldaxrb w1, [x0] 14: 08037c02 stxrb w3, w2, [x0] 18: 35ffffc3 cbnz w3, 10 <set_priv_smc_in_progress+0x10> 1c: 72001c3f tst w1, #0xff 20: 54ffff81 b.ne 10 <set_priv_smc_in_progress+0x10> // b.any 24: d65f03c0 ret