本帖最后由 aozima 于 2012-8-17 17:45 编辑
lz的移植,上下文切换时不保存 r8-r11 的吗?
john_lee 发表于 2012-7-9 13:00
确实有这个BUG:
原因在于M0不能直接使用STM保存 {r8 - r11}
所在原来的移植中先删除了这段代码,但没有完成替换方案。
楼主位已修正了这个问题。
主要代码如下: STMIA r1!, {r4 - r7} ; push thread {r4 - r7} register
MOV r4, r8 ; mov thread {r8 - r11} to {r4 - r7}
MOV r5, r9
MOV r6, r10
MOV r7, r11
STMIA r1!, {r4 - r7} ; push thread {r8 - r11} high register
LDMIA r1!, {r4 - r7} ; pop thread {r4 - r7} register
PUSH {r4 - r7} ; push {r4 - r7} to MSP for copy
LDMIA r1!, {r4 - r7} ; pop thread {r8 - r11} high register
MOV r8, r4 ; mov {r4 - r7} to {r8 - r11}
MOV r9, r5
MOV r10, r6
MOV r11, r7
POP {r4 - r7} ; pop {r4 - r7} from MSP
|