Compiling with msp GCC 4.6.3 "CC 4.6.3 20120301 (mspgcc LTS 20120406 unpatched)" that function becomes:
Code: Select all
14 port_switch:
15 .LFB7:
16 .file 1 "../../os/ports/GCC/MSP430/chcore.c"
17 .loc 1 46 0
18 .LVL0:
19 .loc 1 49 0
20 #APP
21 ; 49 "../../os/ports/GCC/MSP430/chcore.c" 1
22 0000 0B12 push r11
23 0002 0A12 push r10
24 0004 0912 push r9
25 0006 0812 push r8
26 0008 0712 push r7
27 000a 0612 push r6
28 000c 0512 push r5
29 000e 0412 push r4
30 ; 0 "" 2
31 .loc 1 57 0
32 #NOAPP
33 0010 8E41 0600 mov r1, 6(r14)
34 .loc 1 58 0
35 0014 114F 0600 mov 6(r15), r1
36 .LVL1:
37 .loc 1 59 0
38 0018 0F41 mov r1, r15
39 .LVL2:
40 #APP
41 ; 59 "../../os/ports/GCC/MSP430/chcore.c" 1
42 001a 3441 pop r4
43 001c 3541 pop r5
44 001e 3641 pop r6
45 0020 3741 pop r7
46 0022 3841 pop r8
47 0024 3941 pop r9
48 0026 3A41 pop r10
49 0028 3B41 pop r11
50 002a 3041 ret
Which is correct except for an apparently useless "mov r1, r15", strange, are we using the same version?
Giovanni