| @@ -1411,7 +1411,22 @@ static void asm_coprocessor_data_transfer_opcode(TCCState *s1, int token) · 1410 unmodified lines |
| 1411 | | 1411 | |
| 1412 | // TODO: Support options. | 1412 | // TODO: Support options. |
| 1413 | | 1413 | |
| 1414 | switch (ARM_INSTRUCTION_GROUP(token)) { | 1414 | if (token == TOK_ASM_ldc2 || token == TOK_ASM_stc2 || token == TOK_ASM_ldc2l || token == TOK_ASM_stc2l) { |
| | 1415 | switch (token) { |
| | 1416 | case TOK_ASM_ldc2l: |
| | 1417 | long_transfer = 1; // long transfer |
| | 1418 | /* fallthrough */ |
| | 1419 | case TOK_ASM_ldc2: |
| | 1420 | asm_emit_coprocessor_data_transfer(0xF, coprocessor, coprocessor_destination_register, &ops[1], &ops[2], op2_minus, preincrement, exclam, long_transfer, 1); |
| | 1421 | break; |
| | 1422 | case TOK_ASM_stc2l: |
| | 1423 | long_transfer = 1; // long transfer |
| | 1424 | /* fallthrough */ |
| | 1425 | case TOK_ASM_stc2: |
| | 1426 | asm_emit_coprocessor_data_transfer(0xF, coprocessor, coprocessor_destination_register, &ops[1], &ops[2], op2_minus, preincrement, exclam, long_transfer, 0); |
| | 1427 | break; |
| | 1428 | } |
| | 1429 | } else switch (ARM_INSTRUCTION_GROUP(token)) { |
| 1415 | case TOK_ASM_stcleq: | 1430 | case TOK_ASM_stcleq: |
| 1416 | long_transfer = 1; | 1431 | long_transfer = 1; |
| 1417 | /* fallthrough */ | 1432 | /* fallthrough */ |
| @@ -1636,6 +1651,11 @@ ST_FUNC void asm_opcode(TCCState *s1, int token) · 218 unmodified lines |
| 1636 | switch (token) { | 1651 | switch (token) { |
| 1637 | case TOK_ASM_cdp2: | 1652 | case TOK_ASM_cdp2: |
| 1638 | return asm_coprocessor_opcode(s1, token); | 1653 | return asm_coprocessor_opcode(s1, token); |
| | 1654 | case TOK_ASM_ldc2: |
| | 1655 | case TOK_ASM_ldc2l: |
| | 1656 | case TOK_ASM_stc2: |
| | 1657 | case TOK_ASM_stc2l: |
| | 1658 | return asm_coprocessor_data_transfer_opcode(s1, token); |
| 1639 | default: | 1659 | default: |
| 1640 | expect("instruction"); | 1660 | expect("instruction"); |
| 1641 | return; | 1661 | return; |