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

Function StoreExclusive

arch/armv7/il.cpp:514–537  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

512
513
514static void StoreExclusive(
515 LowLevelILFunction& il,
516 uint8_t size,
517 InstructionOperand& status,
518 InstructionOperand& src,
519 InstructionOperand& dst,
520 size_t addr)
521{
522 ExprId address = ReadAddress(il, dst, addr);
523 size_t dstSize = get_register_size(dst.reg);
524
525 LowLevelILLabel trueCode, falseCode;
526 size_t statusSize = get_register_size(status.reg);
527 il.AddInstruction(il.Intrinsic({ RegisterOrFlag::Register(status.reg) },
528 ARMV7_INTRIN_EXCLUSIVE_MONITORS_PASS,
529 { address, il.Const(1, dstSize) }));
530 il.AddInstruction(il.If(il.CompareEqual(statusSize, il.Register(statusSize, status.reg), il.Const(statusSize, 1)),
531 trueCode, falseCode));
532 il.MarkLabel(trueCode);
533
534 Store(il, size, src, dst, addr);
535
536 il.MarkLabel(falseCode);
537}
538
539
540static void StorePair(

Callers 1

Calls 11

ReadAddressFunction · 0.85
RegisterEnum · 0.70
StoreFunction · 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