User binary raises a interrupt/syscall to get into supervisor mode. How does it enter into machine mode? Could you point out this relevance in spec?
User code transitions to supervisor mode by using an ecall instruction. And supervisor code transitions to machine mode by using an ecall instruction. The linux kernel preferably uses the SBI.