lab11/M-ulator

blx instruction doesn't work

Closed this issue · 4 comments

Can't this be fixed easily by copying the body of BXWritePC(uint32_t addr) into BLXWritePC(uint32_t addr), or am I missing something? As far as I can tell, these functions should do the same thing.

I tried that and it seemed to work for me.

Pretty much:

screen shot 2016-07-12 at 18 09 03

It would likely make most sense to factor out the second half into a BLX function and have BX call it.

I likely didn't implement it just b/c I never needed it (what complier for a cortex-m would emit a blx instruction?)

Huh... I wasn't able to find a definition for BLXWritePC() in the ARM ARM, I was just able to find it called by the blx documentation.

what complier for a cortex-m would emit a blx instruction?

My standard cortex-m0+ reset handler looks like this

reset_handler:
    ldr r0, = _crt0
    blx _crt0

Also, blx would be good for executing code from RAM... flash is all the way down at 0x0000 and RAM is up at 0x2000_0000 on most Cortex-m's that I've seen. I don't know how you could get from 0x0000_0000 to 0x2000_0000 without a blx

BTW, great project 👍

Good point on BLX usage; the SoC I built this for had a unified memory, so
I never needed a long jump :D

"Section G.2 Pseudocode functions and procedures" at the very end is really
useful for that, it's just an alphabetized list of all the functions with
links.

Glad it's useful :), lemme know if there are other things that aren't
working.. it's likely bit-rotted a bit and there were always parts that
weren't complete.

On Wed, Jul 13, 2016 at 2:18 PM John Mamish notifications@github.com
wrote:

BTW, great project 👍


You are receiving this because you modified the open/close state.

Reply to this email directly, view it on GitHub
#7 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AAUt3rLcnWMid7_fHmjbYKQuUhs7tpivks5qVSwIgaJpZM4JK3_j
.