@@ -48,11 +48,15 @@ enum EdgeKind_aarch32 : Edge::Kind {
48
48
// /
49
49
FirstArmRelocation,
50
50
51
- // / Write immediate value for PC-relative branch with link (can bridge between
52
- // / Arm and Thumb).
51
+ // / Write immediate value for unconditional PC-relative branch with link.
52
+ // / We patch the instruction opcode to account for an instruction-set state
53
+ // / switch: we use the bl instruction to stay in ARM and the blx instruction
54
+ // / to switch to Thumb.
53
55
Arm_Call = FirstArmRelocation,
54
56
55
- // / Write immediate value for (unconditional) PC-relative branch without link.
57
+ // / Write immediate value for conditional PC-relative branch without link.
58
+ // / If the branch target is not ARM, we are forced to generate an explicit
59
+ // / interworking stub.
56
60
Arm_Jump24,
57
61
58
62
LastArmRelocation = Arm_Jump24,
@@ -62,11 +66,15 @@ enum EdgeKind_aarch32 : Edge::Kind {
62
66
// /
63
67
FirstThumbRelocation,
64
68
65
- // / Write immediate value for PC-relative branch with link (can bridge between
66
- // / Arm and Thumb).
69
+ // / Write immediate value for unconditional PC-relative branch with link.
70
+ // / We patch the instruction opcode to account for an instruction-set state
71
+ // / switch: we use the bl instruction to stay in Thumb and the blx instruction
72
+ // / to switch to ARM.
67
73
Thumb_Call = FirstThumbRelocation,
68
74
69
- // / Write immediate value for (unconditional) PC-relative branch without link.
75
+ // / Write immediate value for PC-relative branch without link. The instruction
76
+ // / can be made conditional by an IT block. If the branch target is not ARM,
77
+ // / we are forced to generate an explicit interworking stub.
70
78
Thumb_Jump24,
71
79
72
80
// / Write immediate value to the lower halfword of the destination register
0 commit comments