• Alexei Fedorov's avatar
    TSP: Fix GCC 11.0.0 compilation error. · caff3c87
    Alexei Fedorov authored
    
    
    This patch fixes the following compilation error
    reported by aarch64-none-elf-gcc 11.0.0:
    
    bl32/tsp/tsp_main.c: In function 'tsp_smc_handler':
    bl32/tsp/tsp_main.c:393:9: error: 'tsp_get_magic'
     accessing 32 bytes in a region of size 16
     [-Werror=stringop-overflow=]
      393 |         tsp_get_magic(service_args);
          |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
    bl32/tsp/tsp_main.c:393:9: note: referencing argument 1
     of type 'uint64_t *' {aka 'long long unsigned int *'}
    In file included from bl32/tsp/tsp_main.c:19:
    bl32/tsp/tsp_private.h:64:6: note: in a call to function 'tsp_get_magic'
       64 | void tsp_get_magic(uint64_t args[4]);
          |      ^~~~~~~~~~~~~
    
    by changing declaration of tsp_get_magic function from
    void tsp_get_magic(uint64_t args[4]);
    to
    uint128_t tsp_get_magic(void);
    which returns arguments directly in x0 and x1 registers.
    
    In bl32\tsp\tsp_main.c the current tsp_smc_handler()
    implementation calls tsp_get_magic(service_args);
    , where service_args array is declared as
    uint64_t service_args[2];
    and tsp_get_magic() in bl32\tsp\aarch64\tsp_request.S
    copies only 2 registers in output buffer:
    	/* Store returned arguments to the array */
    	stp	x0, x1, [x4, #0]
    
    Change-Id: Ib34759fc5d7bb803e6c734540d91ea278270b330
    Signed-off-by: default avatarAlexei Fedorov <Alexei.Fedorov@arm.com>
    caff3c87
tsp_request.S 596 Bytes