On CompactRISC CR16C architecture, because instructions only start at even-numbered addresses, code pointers (as used by JAL, JUMP, Jcond) are shifted one bit to the right. These are distinct from data pointers, which are byte-addressable and just contain the target address without any bit shifting.
Does Ghidra have any additional pointer type that can be used to distinguish between these code pointers and data pointers?
Example of how this currently looks, using the standard pointer type for both:
(field1 is a code pointer, with the comment indicating the address it should be, and field2 is a data pointer)
I tried creating a function definition and setting the type as a pointer to that, but it still kept pointing to the wrong address. So, alternatively, could this behaviour be a bug?