Инструментарий Ghidra, некорректный декомпилированный адрес для относительных скачков с микроконтроллером AVR8
Я новичок в Ghidra toolkit и пытаюсь проанализировать прошивку для микроконтроллера AVR8 (а точнее - для ATmega8535). Ghidra в некоторых случаях генерирует неправильный адрес для команд относительных переходов RJMP/RCALL, когда вычисленный адрес находится "вне" адресного пространства программы - это произошло потому, что (как я понимаю) Ghidra для AVR8 использует 24-битную аритметику для вычисления адреса.
Пример: адрес (0xfffc48) для команды RCALL (вызывающая процедура SUB_code_fffc48) вычислен неправильно, текущий адрес 0x441, смещение в команде RCALL равно 0x806 (это отрицательное значение), поэтому Ghidra получил (с использованием 24-битной арифметики) конечный адрес 0x441 + 0xFFF806 + 1 = 0xFFFc48 который находится за пределами адресного пространства программы для ATmega8535 (на самом деле адресная шина для этого MCU - 12 бит), правильный адрес - 0xc48. Ghidra пометил эту строку ошибкой "Адрес не в памяти" ("Не удалось выполнить процесс дизассемблирования в несуществующую память с кодом:fffc48 (поток из кода:000441)")
code:00043f a0 30 cpi Xlo,0x0
code:000440 19 f0 brbs LAB_code_000444,Zflg
code:000441 06 d8 rcall offset SUB_code_fffc48
Я понимаю, как исправить эту проблему вручную для одной строки - можно отредактировать ссылку, изменив адрес назначения на правильное значение. Но на данный момент у меня около 100 таких ошибок, поэтому ручная модификация бесполезна.
Пожалуйста, подскажите, как решить эту проблему. Я думаю, что это ошибка в определении ЦП (я думаю, что Ghidra должна учитывать размер адресного пространства кода)
Спасибо олех