diff --git a/arch/xtensa/core/crt1.S b/arch/xtensa/core/crt1.S index 10051be9818..73349d98ed0 100644 --- a/arch/xtensa/core/crt1.S +++ b/arch/xtensa/core/crt1.S @@ -56,8 +56,7 @@ _start: * * Assumptions on entry to _start: * - low (level-one) and medium priority interrupts are disabled - * via PS.INTLEVEL and/or INTENABLE (PS.INTLEVEL is expected to - * be zeroed, to potentially enable them, before calling main) + * via PS.INTLEVEL and/or INTENABLE * - C calling context not initialized: * - PS not initialized * - SP not initialized @@ -88,16 +87,16 @@ _start: /* * Now that sp (a1) is set, we can set PS as per the application (user - * vector mode, enable interrupts, enable window exceptions if + * vector mode, disable interrupts, enable window exceptions if * applicable). */ #if XCHAL_HAVE_EXCEPTIONS # ifdef __XTENSA_CALL0_ABI__ - /* PS.WOE = 0, PS.UM = 1, PS.EXCM = 0, PS.INTLEVEL = 0 */ - movi a3, PS_UM + /* PS.WOE = 0, PS.UM = 1, PS.EXCM = 0, PS.INTLEVEL = 15 */ + movi a3, PS_UM|PS_INTLEVEL(15) # else - /* PS.WOE = 1, PS.UM = 1, PS.EXCM = 0, PS.INTLEVEL = 0 */ - movi a3, PS_UM|PS_WOE + /* PS.WOE = 1, PS.UM = 1, PS.EXCM = 0, PS.INTLEVEL = 15 */ + movi a3, PS_UM|PS_WOE|PS_INTLEVEL(15) # endif wsr a3, PS rsync