• Antonio Nino Diaz's avatar
    Fix types of arch.h definitions · 30399885
    Antonio Nino Diaz authored
    
    
    Define the values as unsigned int or unsigned long long based on the
    actual size of the register. This prevents subtle issues caused by
    having a type that is too small. For example:
    
        #define OPTION_ENABLE 0x3
        #define OPTION_SHIFT  32
    
        uint64_t mask = OPTION_ENABLE << OPTION_SHIFT;
    
    Because OPTION_ENABLE fits in an int, the value is considered an int.
    This means that, after shifting it 32 places to the left, the final
    result is 0. The correct way to define the values is:
    
        #define OPTION_ENABLE ULL(0x3)
        #define OPTION_SHIFT  U(32)
    
    In this case, the compiler is forced to use a 64 bit value from the
    start, so shifting it 32 places to the left results in the expected
    value.
    
    Change-Id: Ieaf2ffc2d8caa48c622db011f2aef549e713e019
    Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
    30399885
power_tracer.c 1.18 KB