Index: src/arm/simulator-arm.cc |
=================================================================== |
--- src/arm/simulator-arm.cc (revision 3208) |
+++ src/arm/simulator-arm.cc (working copy) |
@@ -1924,6 +1924,25 @@ |
return result; |
} |
+ |
+uintptr_t Simulator::PushAddress(uintptr_t address) { |
+ int new_sp = get_register(sp) - sizeof(uintptr_t); |
+ uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(new_sp); |
+ *stack_slot = address; |
+ set_register(sp, new_sp); |
+ return new_sp; |
+} |
+ |
+ |
+uintptr_t Simulator::PopAddress() { |
+ int current_sp = get_register(sp); |
+ uintptr_t* stack_slot = reinterpret_cast<uintptr_t*>(current_sp); |
+ uintptr_t address = *stack_slot; |
+ set_register(sp, current_sp + sizeof(uintptr_t)); |
+ return address; |
+} |
+ |
+ |
} } // namespace assembler::arm |
#endif // !defined(__arm__) |