metal_privilege_entry_point_t entry_point)
{
uintptr_t mstatus;
- asm volatile("csrr %0, mstatus" : "=r" (mstatus));
+ __asm__ volatile("csrr %0, mstatus" : "=r" (mstatus));
/* Set xPIE bits based on current xIE bits */
if(mstatus && (1 << METAL_MSTATUS_MIE_OFFSET)) {
mstatus &= ~(METAL_MSTATUS_MPP_MASK << METAL_MSTATUS_MPP_OFFSET);
mstatus |= (mode << METAL_MSTATUS_MPP_OFFSET);
- asm volatile("csrw mstatus, %0" :: "r" (mstatus));
+ __asm__ volatile("csrw mstatus, %0" :: "r" (mstatus));
/* Set the entry point in MEPC */
- asm volatile("csrw mepc, %0" :: "r" (entry_point));
+ __asm__ volatile("csrw mepc, %0" :: "r" (entry_point));
/* Set the register file */
- asm volatile("mv ra, %0" :: "r" (regfile.ra));
- asm volatile("mv sp, %0" :: "r" (regfile.sp));
+ __asm__ volatile("mv ra, %0" :: "r" (regfile.ra));
+ __asm__ volatile("mv sp, %0" :: "r" (regfile.sp));
- asm volatile("mret");
+ __asm__ volatile("mret");
}