tlds
Transactional Operations for Linked Data Structures
|
Go to the source code of this file.
Macros | |
#define | COMPUTE_PROTECTED_STACK_ADDRESS_ITM_FASTCALL(N) ((void**)__builtin_frame_address(0) + 2 + ((N - 6) >= 0) ? : 0) |
#define | COMPUTE_PROTECTED_STACK_ADDRESS_DEFAULT(N) ((void**)__builtin_frame_address(0) + 2 + ((N - 6) >= 0) ? : 0) |
#define COMPUTE_PROTECTED_STACK_ADDRESS_DEFAULT | ( | N | ) | ((void**)__builtin_frame_address(0) + 2 + ((N - 6) >= 0) ? : 0) |
This macro is meant to compute the first stack address that it is safe to write to during rollback or commit. Essentially, it forms the second half of a [TOP_OF_STACK, END_OF_STACK) range for filtering writes. It is calling-convention and architecture specific.
The "+ 2" protects the two words corresponding to the saved caller's frame address and the return address.
The 6 is because I believe that 6 parameters are passed in registers (at least 6 of the kinds of parameters we're concerned with in itm2stm).
This particular version is for the default calling convention.
#define COMPUTE_PROTECTED_STACK_ADDRESS_ITM_FASTCALL | ( | N | ) | ((void**)__builtin_frame_address(0) + 2 + ((N - 6) >= 0) ? : 0) |
Copyright (C) 2011 University of Rochester Department of Computer Science and Lehigh University Department of Computer Science and Engineering
License: Modified BSD Please see the file LICENSE.RSTM for licensing informationThis macro is meant to compute the first stack address that it is safe to write to during rollback or commit. Essentially, it forms the second half of a [TOP_OF_STACK, END_OF_STACK) range for filtering writes. It is calling-convention and architecture specific.
The "+ 2" protects the two words corresponding to the saved caller's frame address and the return address.
The 6 is because I believe that 6 parameters are passed in registers (at least 6 of the kinds of parameters we're concerned with in itm2stm).
This particular version is for ITM's calling convention, which I think is equivalent to the default calling convention in x86_64.