lockTLBEntry, an assembly function, had tlb_lock_count as a symbol that needed to be placed sufficiently close to be loaded and stored with offset-from-pc addressing. When assembled, the symbol would turn up between functions, as opposed to within a literal pool (it's a variable, not a constant) or the .bss / data sections. The decompiler doesn't handle that use case, and likely won't. This change turns tlb_lock_count into a C global variable (so that it will be placed in the .bss / data sections), and splits lockTLBEntry into two parts so the critical section will still fit in a 64-byte aligned region, and therefore be guaranteed to live within a single page. |
||
|---|---|---|
| .. | ||
| preemption.h | ||
| statedata.h | ||