1
0
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:
Doug Rabson 2001-09-20 16:29:30 +00:00
parent db4de7c98c
commit 1e59a2270d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=83732

View File

@ -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 {