.. | .. |
---|
113 | 113 | { |
---|
114 | 114 | unsigned long flags, ttbr; |
---|
115 | 115 | |
---|
116 | | - local_irq_save(flags); |
---|
| 116 | + flags = hard_local_irq_save(); |
---|
117 | 117 | ttbr = read_sysreg(ttbr1_el1); |
---|
118 | 118 | ttbr &= ~TTBR_ASID_MASK; |
---|
119 | 119 | /* reserved_pg_dir placed before swapper_pg_dir */ |
---|
.. | .. |
---|
122 | 122 | /* Set reserved ASID */ |
---|
123 | 123 | write_sysreg(ttbr, ttbr1_el1); |
---|
124 | 124 | isb(); |
---|
125 | | - local_irq_restore(flags); |
---|
| 125 | + hard_local_irq_restore(flags); |
---|
126 | 126 | } |
---|
127 | 127 | |
---|
128 | 128 | static inline void __uaccess_ttbr0_enable(void) |
---|
.. | .. |
---|
134 | 134 | * variable and the MSR. A context switch could trigger an ASID |
---|
135 | 135 | * roll-over and an update of 'ttbr0'. |
---|
136 | 136 | */ |
---|
137 | | - local_irq_save(flags); |
---|
| 137 | + flags = hard_local_irq_save(); |
---|
138 | 138 | ttbr0 = READ_ONCE(current_thread_info()->ttbr0); |
---|
139 | 139 | |
---|
140 | 140 | /* Restore active ASID */ |
---|
.. | .. |
---|
147 | 147 | /* Restore user page table */ |
---|
148 | 148 | write_sysreg(ttbr0, ttbr0_el1); |
---|
149 | 149 | isb(); |
---|
150 | | - local_irq_restore(flags); |
---|
| 150 | + hard_local_irq_restore(flags); |
---|
151 | 151 | } |
---|
152 | 152 | |
---|
153 | 153 | static inline bool uaccess_ttbr0_disable(void) |
---|