Commit 15a2e56
committed
standalone_systests: fix tlbp64 to probe HSV39 extended TLB entries
The previous tlbp64 split the 64-bit lookup key into two uint32_t
halves and probed each separately. Each probe used `"r"(<uint32_t>)`
as the inline-asm constraint, which made the compiler allocate a
single 32-bit register. The assembler's `tlbp` mnemonic is
operand-width-driven: a single 32-bit register selects the legacy
Y2_tlbp instruction (which only searches legacy TLB entries at
indices 0-511); a 64-bit register pair (Rss) selects Y2_tlbpp
(which searches the full TLB including HSV39 extended entries at
indices 512+).
The hsv39_tlb test writes its TLB entries at indices >=512. The
old tlbp64 always emitted Y2_tlbp and so never found those entries,
making the test fail with bogus TLB_NOT_FOUND results.
Pass the lookup key as a single uint64_t. This forces a register
pair and makes the assembler emit Y2_tlbpp.
Signed-off-by: Marco Liebel <marco.liebel@oss.qualcomm.com>1 parent 6e9fb41 commit 15a2e56
1 file changed
Lines changed: 2 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
87 | 87 | | |
88 | 88 | | |
89 | 89 | | |
90 | | - | |
91 | | - | |
| 90 | + | |
92 | 91 | | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
| 92 | + | |
100 | 93 | | |
101 | 94 | | |
102 | 95 | | |
| |||
0 commit comments