This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Transition to secure monitor flow on ARMv8

Hi everyone,

Wherever I go on internet, the thing I read is that when SMC instruction is executed an exception is generated, it takes you to the highest exception level (EL3) where secure monitor is running.

In ARM v8 vector table, given on ARMv8-A architecture reference manual page 1800, there are four types of exceptions:

  1. Synchronous
  2. IRQ or vIRQ
  3. FIQ or vFIQ
  4. SError or vSError

As there is no exception with name SMC, I want to ask under which exception type does SMC fall? If I have a baremetal program running on Cortex-A72, what do I need to do if want to write a SMC handler?

Any answers will be highly appreciated,

Thanks

Parents
  • Exceptions caused by SMC instructions go to the Synchronous exception vector. This makes sense, because the exception is precise and is caused during program execution by an instruction. To know if the exception taken is really an SMC, you have to look at EL3_ESR register, since other things like translation table faults also vector synchronously. The ARMv8 A, Architecture Reference Manual describes how to decode it to figure out if it was indeed an exception caused by the SMC. 

Reply
  • Exceptions caused by SMC instructions go to the Synchronous exception vector. This makes sense, because the exception is precise and is caused during program execution by an instruction. To know if the exception taken is really an SMC, you have to look at EL3_ESR register, since other things like translation table faults also vector synchronously. The ARMv8 A, Architecture Reference Manual describes how to decode it to figure out if it was indeed an exception caused by the SMC. 

Children