MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / StorePairExclusive

Function StorePairExclusive

arch/armv7/il.cpp:569–592  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

567
568
569static void StorePairExclusive(
570 Architecture* arch,
571 LowLevelILFunction& il,
572 InstructionOperand& status,
573 InstructionOperand& src1,
574 InstructionOperand& src2,
575 InstructionOperand& dst,
576 size_t addr)
577{
578 ExprId address = ReadAddress(il, dst, addr);
579
580 LowLevelILLabel trueCode, falseCode;
581 size_t statusSize = get_register_size(status.reg);
582 il.AddInstruction(il.Intrinsic({ RegisterOrFlag::Register(status.reg) },
583 ARMV7_INTRIN_EXCLUSIVE_MONITORS_PASS,
584 { address, il.Const(1, 8) }));
585 il.AddInstruction(il.If(il.CompareEqual(statusSize, il.Register(statusSize, status.reg), il.Const(statusSize, 1)),
586 trueCode, falseCode));
587 il.MarkLabel(trueCode);
588
589 StorePair(arch, il, src1, src2, dst, addr);
590
591 il.MarkLabel(falseCode);
592}
593
594
595static void Saturate(LowLevelILFunction& il, uint32_t dest, ExprId to_saturate, ExprId saturate_to, bool is_signed)

Callers 1

Calls 11

ReadAddressFunction · 0.85
StorePairFunction · 0.85
RegisterEnum · 0.70
get_register_sizeFunction · 0.50
AddInstructionMethod · 0.45
IntrinsicMethod · 0.45
ConstMethod · 0.45
IfMethod · 0.45
CompareEqualMethod · 0.45
RegisterMethod · 0.45
MarkLabelMethod · 0.45

Tested by

no test coverage detected