Home | History | Annotate | Download | only in bfin
      1 
      2 .EXTERN MY_LABEL2;
      3 .section .text;
      4 
      5 //
      6 //2 Program Flow Control
      7 //
      8 
      9 
     10 //JUMP ( Preg ) ; /* indirect to an absolute (not PC-relative)address (a) */
     11 //Preg: P5-0, SP, FP
     12 
     13 JUMP (P0);
     14 JUMP (P1);
     15 JUMP (P2);
     16 JUMP (P3);
     17 JUMP (P4);
     18 JUMP (P5);
     19 JUMP (SP);
     20 JUMP (FP);
     21 
     22 //JUMP ( PC + Preg ) ; /* PC-relative, indexed (a) */
     23 JUMP (PC+P0);
     24 JUMP (PC+P1);
     25 JUMP (PC+P2);
     26 JUMP (PC+P3);
     27 JUMP (PC+P4);
     28 JUMP (PC+P5);
     29 JUMP (PC+SP);
     30 JUMP (PC+FP);
     31 
     32 
     33 //JUMP pcrelm2 ; /* PC-relative, immediate (a) or (b) */
     34 
     35 JUMP 0X0;
     36 JUMP 1234;
     37 JUMP -1234;
     38 JUMP 2;
     39 JUMP -2;
     40 
     41 MY_LABEL1:
     42 //JUMP.S pcrel13m2 ; /* PC-relative, immediate, short (a) */
     43 JUMP.S 0X0;
     44 JUMP.S 1234;
     45 JUMP.S -1234;
     46 JUMP.S 2;
     47 JUMP.S -2;
     48 
     49 //JUMP.L pcrel25m2 ; /* PC-relative, immediate, long (b) */
     50 JUMP.L 0XFF800000;
     51 JUMP.L 0X007FFFFE;
     52 JUMP.L 0X0;
     53 JUMP.L 1234;
     54 JUMP.L -1234;
     55 JUMP.L 2;
     56 JUMP.L -2;
     57 
     58 //JUMP user_label ; /* user-defined absolute address label, */
     59 JUMP MY_LABEL1;
     60 JUMP MY_LABEL2;
     61 
     62 JUMP MY_LABEL1-2;
     63 JUMP MY_LABEL2-2;
     64 
     65 //IF CC JUMP pcrel11m2 ; /* branch if CC=1, branch predicted as not taken (a) */
     66 IF CC JUMP 0xFFFFFE08;
     67 IF CC JUMP 0x0B4;
     68 IF CC JUMP 0;
     69 
     70 //IF CC JUMP pcrel11m2 (bp) ; /* branch if CC=1, branch predicted as taken (a) */
     71 IF CC JUMP 0xFFFFFE08(bp);
     72 IF CC JUMP 0x0B4(bp);
     73 
     74 //IF !CC JUMP pcrel11m2 ; /* branch if CC=0, branch predicted as not taken (a) */
     75 IF !CC JUMP 0xFFFFFF22;
     76 IF !CC JUMP 0X120;
     77 
     78 //IF !CC JUMP pcrel11m2 (bp) ; /* branch if CC=0, branch predicted as taken (a) */
     79 IF !CC JUMP 0xFFFFFF22(bp);
     80 IF !CC JUMP 0X120(bp);
     81 
     82 //IF CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
     83 IF CC JUMP MY_LABEL1;
     84 IF CC JUMP MY_LABEL2;
     85 
     86 //IF CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
     87 IF CC JUMP MY_LABEL1(bp);
     88 IF CC JUMP MY_LABEL2(bp);
     89 
     90 //IF !CC JUMP user_label ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
     91 IF !CC JUMP MY_LABEL1;
     92 IF !CC JUMP MY_LABEL2;
     93 
     94 //IF !CC JUMP user_label (bp) ; /* user-defined absolute address label, resolved by the assembler/linker to the appropriate PC-relative instruction (a) */
     95 IF !CC JUMP MY_LABEL1(bp);
     96 IF !CC JUMP MY_LABEL2(bp);
     97 
     98 //CALL ( Preg ) ; /* indirect to an absolute (not PC-relative) address (a) */
     99 CALL(P0);
    100 CALL(P1);
    101 CALL(P2);
    102 CALL(P3);
    103 CALL(P4);
    104 CALL(P5);
    105 
    106 
    107 //CALL ( PC + Preg ) ; /* PC-relative, indexed (a) */
    108 CALL(PC+P0);
    109 CALL(PC+P1);
    110 CALL(PC+P2);
    111 CALL(PC+P3);
    112 CALL(PC+P4);
    113 CALL(PC+P5);
    114 
    115 //CALL pcrel25m2 ; /* PC-relative, immediate (b) */
    116 CALL 0x123456 ;
    117 CALL -1234;
    118 
    119 //CALL user_label ; /* user-defined absolute address label,resolved by the assembler/linker to the appropriate PC-relative instruction (a) or (b) */
    120 CALL MY_LABEL1;
    121 CALL MY_LABEL2;
    122 
    123 RTS ; // Return from Subroutine (a)
    124 RTI ; // Return from Interrupt (a)
    125 RTX ; // Return from Exception (a)
    126 RTN ; // Return from NMI (a)
    127 RTE ; // Return from Emulation (a)
    128 
    129 lsetup ( 4, 4 ) lc0 ;
    130 
    131 lsetup ( beg_poll_bit, end_poll_bit ) lc0 ;
    132 NOP;NOP;
    133 beg_poll_bit: R0=1(Z);
    134 end_poll_bit: R1=2(Z);
    135 
    136 lsetup ( 4, 6 ) lc1 ;
    137 
    138 lsetup ( FIR_filter, bottom_of_FIR_filter ) lc1 ;
    139 NOP;
    140 FIR_filter: R0=1(Z);
    141 bottom_of_FIR_filter: R1=2(Z);
    142 
    143 lsetup ( 4, 8 ) lc0 = p1 ;
    144 
    145 lsetup ( 4, 8 ) lc0 = p1>>1 ;
    146 
    147 loop DoItSome LC0 ; /* define loop DoItSome with Loop Counter 0 */
    148 loop_begin DoItSome ; /* place before the first instruction in the loop */
    149 R0=1;
    150 R1=2;
    151 loop_end DoItSome ; /* place after the last instruction in the loop */
    152 
    153 loop DoItSomeMore LC1 ; /* define loop MyLoop with Loop Counter 1*/
    154 
    155 
    156