Home
last modified time | relevance | path

Searched refs:aligned_addr (Results 1 – 4 of 4) sorted by relevance

/frameworks/libs/binary_translation/runtime_primitives/include/berberis/runtime_primitives/
Dmemory_region_reservation.h45 GuestAddr aligned_addr = addr - (addr % sizeof(Reservation)); in Load() local
46 cpu->reservation_address = aligned_addr; in Load()
48 cpu->reservation_value = ReservationLoad(cpu, aligned_addr, mem_order); in Load()
51 return static_cast<Type>(cpu->reservation_value >> ((addr - aligned_addr) * CHAR_BIT)); in Load()
62 GuestAddr aligned_addr = addr - (addr % sizeof(Reservation)); in Store() local
63 if (aligned_addr != reservation_address) { in Store()
71 memcpy(reinterpret_cast<char*>(&new_value) + (addr - aligned_addr), &value, sizeof(Type)); in Store()
73 return ReservationExchange(cpu, aligned_addr, cur_value, new_value, mem_order) ? 0 : 1; in Store()
78 static void SetOwner(GuestAddr aligned_addr, void* cpu);
79 static Entry* TryLock(GuestAddr aligned_addr, void* cpu);
[all …]
/frameworks/libs/binary_translation/runtime_primitives/
Dmemory_region_reservation.cc99 void MemoryRegionReservation::SetOwner(GuestAddr aligned_addr, void* cpu) { in SetOwner() argument
100 auto& entry = GetEntry(aligned_addr); in SetOwner()
110 MemoryRegionReservation::Entry* MemoryRegionReservation::TryLock(GuestAddr aligned_addr, in TryLock() argument
112 auto& entry = GetEntry(aligned_addr); in TryLock()
128 GuestAddr aligned_addr, in ReservationLoad() argument
130 SetOwner(aligned_addr, cpu); in ReservationLoad()
143 return MemoryRegionReservationLoad(aligned_addr, mem_order); in ReservationLoad()
147 GuestAddr aligned_addr, in ReservationExchange() argument
151 auto* entry = TryLock(aligned_addr, cpu); in ReservationExchange()
158 ToHostAddr<std::atomic<Reservation>>(aligned_addr), in ReservationExchange()
/frameworks/libs/binary_translation/heavy_optimizer/riscv64/
Dfrontend.h175 Register aligned_addr = AllocTempReg(); in Lr() local
176 Gen<PseudoCopy>(aligned_addr, addr, 8); in Lr()
178 Gen<x86_64::AndqRegImm>(aligned_addr, ~int32_t{sizeof(Reservation) - 1}, GetFlagsRegister()); in Lr()
180 MemoryRegionReservationLoad(aligned_addr); in Lr()
184 Gen<x86_64::SubqRegReg>(addr_offset, aligned_addr, GetFlagsRegister()); in Lr()
196 auto aligned_addr = AllocTempReg(); in Sc() local
197 Gen<PseudoCopy>(aligned_addr, addr, 8); in Sc()
199 Gen<x86_64::AndqRegImm>(aligned_addr, ~int32_t{sizeof(Reservation) - 1}, GetFlagsRegister()); in Sc()
207 Gen<x86_64::SubqRegReg>(addr_offset, aligned_addr, GetFlagsRegister()); in Sc()
216 return MemoryRegionReservationExchange(aligned_addr, reservation_value); in Sc()
[all …]
Dfrontend.cc856 void HeavyOptimizerFrontend::MemoryRegionReservationLoad(Register aligned_addr) { in MemoryRegionReservationLoad() argument
859 Gen<x86_64::MovqMemBaseDispReg>(x86_64::kMachineRegRBP, address_offset, aligned_addr); in MemoryRegionReservationLoad()
865 {aligned_addr, x86_64::CallImm::kIntRegType}, in MemoryRegionReservationLoad()
871 Gen<x86_64::MovqRegMemBaseDisp>(reservation, aligned_addr, 0); in MemoryRegionReservationLoad()
876 Register HeavyOptimizerFrontend::MemoryRegionReservationExchange(Register aligned_addr, in MemoryRegionReservationExchange() argument
894 Gen<x86_64::CmpqRegReg>(stored_aligned_addr, aligned_addr, GetFlagsRegister()); in MemoryRegionReservationExchange()
905 aligned_addr, curr_reservation_value, new_reservation_value, failure_bb); in MemoryRegionReservationExchange()
923 Register aligned_addr, in MemoryRegionReservationSwapWithLockedOwner() argument
939 {aligned_addr, x86_64::CallImm::kIntRegType}, in MemoryRegionReservationSwapWithLockedOwner()
953 rax, aligned_addr, 0, new_reservation_value, GetFlagsRegister()); in MemoryRegionReservationSwapWithLockedOwner()