mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-24 16:10:11 +00:00
The second instruction in an MLX bundle is slot one, not slot two, even
though the actual opcode is stored in the value in slot two.
This commit is contained in:
parent
db4de7c98c
commit
1e59a2270d
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=83732
@ -2831,6 +2831,14 @@ db_disasm(db_addr_t loc, boolean_t altfmt)
|
||||
loc &= ~15;
|
||||
db_read_bundle(loc, &b);
|
||||
|
||||
/*
|
||||
* The uses a Restart Instruction value of one to represent
|
||||
* the L+X slot of an MLX template bundle but the opcode is
|
||||
* actually in slot two.
|
||||
*/
|
||||
if ((b.template == 4 || b.template == 5) && slot == 1)
|
||||
slot = 2;
|
||||
|
||||
if (b.slot[slot] & 63)
|
||||
db_printf("(p%ld) ", b.slot[slot] & 63);
|
||||
(prints[b.template][slot])(loc, b.slot[slot], altfmt);
|
||||
@ -2839,9 +2847,13 @@ db_disasm(db_addr_t loc, boolean_t altfmt)
|
||||
else
|
||||
db_printf("\n");
|
||||
|
||||
/*
|
||||
* Handle MLX bundles by advancing from slot one to the
|
||||
* following bundle.
|
||||
*/
|
||||
if (b.template == 4 || b.template == 5) {
|
||||
if (slot == 0)
|
||||
loc += 2;
|
||||
loc += 1;
|
||||
else
|
||||
loc += 16;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user