本帖最后由 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
复制代码
|