public static Address setTargetContextForDisassembly(Program program, Address addr) {
		if (!addr.isMemoryAddress()) {
			Msg.error(PseudoDisassembler.class,
				"Invalid attempt to adjust disassembler context at " + addr.toString(true));
			return addr;
		}

		long offset = addr.getOffset();
		if ((offset & 1) == 0) {
			return addr;
		}

		Register lowBitCodeMode = program.getRegister(LOW_BIT_CODE_MODE_REGISTER_NAME);
		if (lowBitCodeMode == null) {
			return addr;
		}

		addr = addr.getNewAddress(addr.getOffset() & ~0x1);
		try {
			program.getProgramContext().setValue(lowBitCodeMode, addr, addr, BigInteger.ONE);
		}
		catch (ContextChangeException e) {
			// shouldn't happen
		}
		return addr;
	}
If this processor uses the low bit of an address to change to a new Instruction Set mode
  Check the low bit and change the instruction state at the address.
  
@param program
@param addr the raw address
@return the correct address to disassemble at if it needs to be aligned
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/app/util/PseudoDisassembler.java