diff --git a/bl31/runtime_svc.c b/bl31/runtime_svc.c index f011f11..8729e29 100644 --- a/bl31/runtime_svc.c +++ b/bl31/runtime_svc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -28,6 +28,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include #include @@ -42,11 +43,14 @@ * 'rt_svc_descs_indices' array. This gives the index of the descriptor in the * 'rt_svc_descs' array which contains the SMC handler. ******************************************************************************/ -#define RT_SVC_DESCS_START ((uint64_t) (&__RT_SVC_DESCS_START__)) -#define RT_SVC_DESCS_END ((uint64_t) (&__RT_SVC_DESCS_END__)) +#define RT_SVC_DESCS_START ((uintptr_t) (&__RT_SVC_DESCS_START__)) +#define RT_SVC_DESCS_END ((uintptr_t) (&__RT_SVC_DESCS_END__)) uint8_t rt_svc_descs_indices[MAX_RT_SVCS]; static rt_svc_desc_t *rt_svc_descs; +#define RT_SVC_DECS_NUM ((RT_SVC_DESCS_END - RT_SVC_DESCS_START)\ + / sizeof(rt_svc_desc_t)) + /******************************************************************************* * Simple routine to sanity check a runtime service descriptor before using it ******************************************************************************/ @@ -80,21 +84,20 @@ ******************************************************************************/ void runtime_svc_init(void) { - int32_t rc = 0; - uint32_t index, start_idx, end_idx; - uint64_t rt_svc_descs_num; + int rc = 0, index, start_idx, end_idx; + + /* Assert the number of descriptors detected are less than maximum indices */ + assert((RT_SVC_DECS_NUM >= 0) && (RT_SVC_DECS_NUM < MAX_RT_SVCS)); /* If no runtime services are implemented then simply bail out */ - rt_svc_descs_num = RT_SVC_DESCS_END - RT_SVC_DESCS_START; - rt_svc_descs_num /= sizeof(rt_svc_desc_t); - if (rt_svc_descs_num == 0) + if (RT_SVC_DECS_NUM == 0) return; /* Initialise internal variables to invalid state */ memset(rt_svc_descs_indices, -1, sizeof(rt_svc_descs_indices)); rt_svc_descs = (rt_svc_desc_t *) RT_SVC_DESCS_START; - for (index = 0; index < rt_svc_descs_num; index++) { + for (index = 0; index < RT_SVC_DECS_NUM; index++) { /* * An invalid descriptor is an error condition since it is diff --git a/common/bl_common.c b/common/bl_common.c index 7cafe63..acb2ec6 100644 --- a/common/bl_common.c +++ b/common/bl_common.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -40,24 +40,20 @@ #include #include -unsigned long page_align(unsigned long value, unsigned dir) +uintptr_t page_align(uintptr_t value, unsigned dir) { - unsigned long page_size = 1 << FOUR_KB_SHIFT; - /* Round up the limit to the next page boundary */ - if (value & (page_size - 1)) { - value &= ~(page_size - 1); + if (value & (PAGE_SIZE - 1)) { + value &= ~(PAGE_SIZE - 1); if (dir == UP) - value += page_size; + value += PAGE_SIZE; } return value; } -static inline unsigned int is_page_aligned (unsigned long addr) { - const unsigned long page_size = 1 << FOUR_KB_SHIFT; - - return (addr & (page_size - 1)) == 0; +static inline unsigned int is_page_aligned (uintptr_t addr) { + return (addr & (PAGE_SIZE - 1)) == 0; } /****************************************************************************** @@ -65,8 +61,8 @@ * given the extents of free memory. * Return 1 if it is free, 0 otherwise. *****************************************************************************/ -static int is_mem_free(uint64_t free_base, size_t free_size, - uint64_t addr, size_t size) +static int is_mem_free(uintptr_t free_base, size_t free_size, + uintptr_t addr, size_t size) { return (addr >= free_base) && (addr + size <= free_base + free_size); } @@ -77,9 +73,9 @@ * size of the smallest chunk of free memory surrounding the sub-region in * 'small_chunk_size'. *****************************************************************************/ -static unsigned int choose_mem_pos(uint64_t mem_start, uint64_t mem_end, - uint64_t submem_start, uint64_t submem_end, - size_t *small_chunk_size) +static unsigned int choose_mem_pos(uintptr_t mem_start, uintptr_t mem_end, + uintptr_t submem_start, uintptr_t submem_end, + size_t *small_chunk_size) { size_t top_chunk_size, bottom_chunk_size; @@ -106,8 +102,8 @@ * reflect the memory usage. * The caller must ensure the memory to reserve is free. *****************************************************************************/ -void reserve_mem(uint64_t *free_base, size_t *free_size, - uint64_t addr, size_t size) +void reserve_mem(uintptr_t *free_base, size_t *free_size, + uintptr_t addr, size_t size) { size_t discard_size; size_t reserved_size; @@ -127,26 +123,26 @@ if (pos == BOTTOM) *free_base = addr + size; - VERBOSE("Reserved 0x%lx bytes (discarded 0x%lx bytes %s)\n", + VERBOSE("Reserved 0x%zx bytes (discarded 0x%zx bytes %s)\n", reserved_size, discard_size, pos == TOP ? "above" : "below"); } -static void dump_load_info(unsigned long image_load_addr, - unsigned long image_size, +static void dump_load_info(uintptr_t image_load_addr, + size_t image_size, const meminfo_t *mem_layout) { - INFO("Trying to load image at address 0x%lx, size = 0x%lx\n", - image_load_addr, image_size); + INFO("Trying to load image at address %p, size = 0x%zx\n", + (void *)image_load_addr, image_size); INFO("Current memory layout:\n"); - INFO(" total region = [0x%lx, 0x%lx]\n", mem_layout->total_base, - mem_layout->total_base + mem_layout->total_size); - INFO(" free region = [0x%lx, 0x%lx]\n", mem_layout->free_base, - mem_layout->free_base + mem_layout->free_size); + INFO(" total region = [%p, %p]\n", (void *)mem_layout->total_base, + (void *)(mem_layout->total_base + mem_layout->total_size)); + INFO(" free region = [%p, %p]\n", (void *)mem_layout->free_base, + (void *)(mem_layout->free_base + mem_layout->free_size)); } /* Generic function to return the size of an image */ -unsigned long image_size(unsigned int image_id) +size_t image_size(unsigned int image_id) { uintptr_t dev_handle; uintptr_t image_handle; @@ -367,9 +363,8 @@ ******************************************************************************/ void print_entry_point_info(const entry_point_info_t *ep_info) { - INFO("Entry point address = 0x%llx\n", - (unsigned long long) ep_info->pc); - INFO("SPSR = 0x%lx\n", (unsigned long) ep_info->spsr); + INFO("Entry point address = %p\n", (void *)ep_info->pc); + INFO("SPSR = 0x%x\n", ep_info->spsr); #define PRINT_IMAGE_ARG(n) \ VERBOSE("Argument #" #n " = 0x%llx\n", \ diff --git a/common/context_mgmt.c b/common/context_mgmt.c index 3ccbd03..4527aa3 100644 --- a/common/context_mgmt.c +++ b/common/context_mgmt.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -285,7 +285,7 @@ * This function populates ELR_EL3 member of 'cpu_context' pertaining to the * given security state with the given entrypoint ******************************************************************************/ -void cm_set_elr_el3(uint32_t security_state, uint64_t entrypoint) +void cm_set_elr_el3(uint32_t security_state, uintptr_t entrypoint) { cpu_context_t *ctx; el3_state_t *state; @@ -303,7 +303,7 @@ * pertaining to the given security state ******************************************************************************/ void cm_set_elr_spsr_el3(uint32_t security_state, - uint64_t entrypoint, uint32_t spsr) + uintptr_t entrypoint, uint32_t spsr) { cpu_context_t *ctx; el3_state_t *state; diff --git a/docs/porting-guide.md b/docs/porting-guide.md index 23033d5..8dad4a0 100644 --- a/docs/porting-guide.md +++ b/docs/porting-guide.md @@ -545,7 +545,7 @@ ### Function : plat_get_my_entrypoint() [mandatory when PROGRAMMABLE_RESET_ADDRESS == 0] Argument : void - Return : unsigned long + Return : uintptr_t This function is called with the called with the MMU and caches disabled (`SCTLR_EL3.M` = 0 and `SCTLR_EL3.C` = 0). The function is responsible for @@ -748,7 +748,7 @@ ### Function : plat_get_my_stack() Argument : void - Return : unsigned long + Return : uintptr_t This function returns the base address of the normal memory stack that has been allocated for the current CPU. For BL images that only require a @@ -966,7 +966,7 @@ ### Function : bl1_init_bl2_mem_layout() [optional] - Argument : meminfo *, meminfo *, unsigned int, unsigned long + Argument : meminfo *, meminfo * Return : void BL1 needs to tell the next stage the amount of secure RAM available diff --git a/docs/psci-pd-tree.md b/docs/psci-pd-tree.md index 6ae686d..c253905 100644 --- a/docs/psci-pd-tree.md +++ b/docs/psci-pd-tree.md @@ -203,7 +203,7 @@ } non_cpu_pd_node_t; typedef struct cpu_pwr_domain_node { - unsigned long mpidr; + u_register_t mpidr; /* Index of the parent power domain node */ unsigned int parent_node; diff --git a/docs/rt-svc-writers-guide.md b/docs/rt-svc-writers-guide.md index 40cee14..856e8fe 100644 --- a/docs/rt-svc-writers-guide.md +++ b/docs/rt-svc-writers-guide.md @@ -124,12 +124,12 @@ * `_smch` is the SMC handler function with the `rt_svc_handle` signature: - typedef uint64_t (*rt_svc_handle)(uint32_t smc_fid, - uint64_t x1, uint64_t x2, - uint64_t x3, uint64_t x4, + typedef uintptr_t (*rt_svc_handle_t)(uint32_t smc_fid, + u_register_t x1, u_register_t x2, + u_register_t x3, u_register_t x4, void *cookie, void *handle, - uint64_t flags); + u_register_t flags); Details of the requirements and behavior of the two callbacks is provided in the following sections. @@ -189,12 +189,12 @@ handler function (`_smch` in the service declaration). This function must have the following signature: - typedef uint64_t (*rt_svc_handle)(uint32_t smc_fid, - uint64_t x1, uint64_t x2, - uint64_t x3, uint64_t x4, - void *reserved, - void *handle, - uint64_t flags); + typedef uintptr_t (*rt_svc_handle_t)(uint32_t smc_fid, + u_register_t x1, u_register_t x2, + u_register_t x3, u_register_t x4, + void *cookie, + void *handle, + u_register_t flags); The handler is responsible for: diff --git a/drivers/arm/ccn/ccn_private.h b/drivers/arm/ccn/ccn_private.h index fffa2ca..a5a6146 100644 --- a/drivers/arm/ccn/ccn_private.h +++ b/drivers/arm/ccn/ccn_private.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -104,7 +104,7 @@ #define WAIT_FOR_DOMAIN_CTRL_OP_COMPLETION(region_id, stat_reg_offset, \ op_reg_offset, rn_id_map) \ { \ - uint64_t status_reg; \ + unsigned long long status_reg; \ do { \ status_reg = ccn_reg_read((ccn_plat_desc->periphbase), \ (region_id), \ @@ -208,7 +208,7 @@ /* * Helper function to return number of set bits in bitmap */ -static inline unsigned int count_set_bits(uint64_t bitmap) +static inline unsigned int count_set_bits(unsigned long long bitmap) { unsigned int count = 0; diff --git a/drivers/arm/gic/v3/gicv3_helpers.c b/drivers/arm/gic/v3/gicv3_helpers.c index 07ae54c..0a81c86 100644 --- a/drivers/arm/gic/v3/gicv3_helpers.c +++ b/drivers/arm/gic/v3/gicv3_helpers.c @@ -250,7 +250,7 @@ uintptr_t gicr_base, mpidr_hash_fn mpidr_to_core_pos) { - unsigned long mpidr; + u_register_t mpidr; unsigned int proc_num; unsigned long long typer_val; uintptr_t rdistif_base = gicr_base; @@ -320,7 +320,7 @@ unsigned int int_grp) { unsigned int index, irq_num; - uint64_t gic_affinity_val; + unsigned long long gic_affinity_val; assert((int_grp == INTR_GROUP1S) || (int_grp == INTR_GROUP0)); /* If `num_ints` is not 0, ensure that `sec_intr_list` is not NULL */ diff --git a/include/bl31/cpu_data.h b/include/bl31/cpu_data.h index 2b506c7..3a1db5c 100644 --- a/include/bl31/cpu_data.h +++ b/include/bl31/cpu_data.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -78,9 +78,9 @@ ******************************************************************************/ typedef struct cpu_data { void *cpu_context[2]; - uint64_t cpu_ops_ptr; + uintptr_t cpu_ops_ptr; #if CRASH_REPORTING - uint64_t crash_buf[CPU_DATA_CRASH_BUF_SIZE >> 3]; + u_register_t crash_buf[CPU_DATA_CRASH_BUF_SIZE >> 3]; #endif struct psci_cpu_data psci_svc_cpu_data; #if PLAT_PCPU_DATA_SIZE @@ -123,14 +123,14 @@ #define get_cpu_data_by_index(_ix, _m) _cpu_data_by_index(_ix)->_m #define set_cpu_data_by_index(_ix, _m, _v) _cpu_data_by_index(_ix)->_m = _v -#define flush_cpu_data(_m) flush_dcache_range((uint64_t) \ +#define flush_cpu_data(_m) flush_dcache_range((uintptr_t) \ &(_cpu_data()->_m), \ sizeof(_cpu_data()->_m)) -#define inv_cpu_data(_m) inv_dcache_range((uint64_t) \ +#define inv_cpu_data(_m) inv_dcache_range((uintptr_t) \ &(_cpu_data()->_m), \ sizeof(_cpu_data()->_m)) #define flush_cpu_data_by_index(_ix, _m) \ - flush_dcache_range((uint64_t) \ + flush_dcache_range((uintptr_t) \ &(_cpu_data_by_index(_ix)->_m), \ sizeof(_cpu_data_by_index(_ix)->_m)) diff --git a/include/bl31/runtime_svc.h b/include/bl31/runtime_svc.h index 03f906e..adafcee 100644 --- a/include/bl31/runtime_svc.h +++ b/include/bl31/runtime_svc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -66,14 +66,14 @@ * can be accessed using the handle pointer. The cookie parameter is reserved * for future use */ -typedef uint64_t (*rt_svc_handle_t)(uint32_t smc_fid, - uint64_t x1, - uint64_t x2, - uint64_t x3, - uint64_t x4, +typedef uintptr_t (*rt_svc_handle_t)(uint32_t smc_fid, + u_register_t x1, + u_register_t x2, + u_register_t x3, + u_register_t x4, void *cookie, void *handle, - uint64_t flags); + u_register_t flags); typedef struct rt_svc_desc { uint8_t start_oen; uint8_t end_oen; @@ -127,8 +127,8 @@ * Function & variable prototypes ******************************************************************************/ void runtime_svc_init(void); -extern uint64_t __RT_SVC_DESCS_START__; -extern uint64_t __RT_SVC_DESCS_END__; +extern uintptr_t __RT_SVC_DESCS_START__; +extern uintptr_t __RT_SVC_DESCS_END__; void init_crash_reporting(void); #endif /*__ASSEMBLY__*/ diff --git a/include/bl31/services/psci.h b/include/bl31/services/psci.h index 20aa52e..b6d6d4e 100644 --- a/include/bl31/services/psci.h +++ b/include/bl31/services/psci.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -296,13 +296,13 @@ * migrate capability etc. ******************************************************************************/ typedef struct spd_pm_ops { - void (*svc_on)(uint64_t target_cpu); - int32_t (*svc_off)(uint64_t __unused); - void (*svc_suspend)(uint64_t max_off_pwrlvl); - void (*svc_on_finish)(uint64_t __unused); - void (*svc_suspend_finish)(uint64_t max_off_pwrlvl); - int32_t (*svc_migrate)(uint64_t from_cpu, uint64_t to_cpu); - int32_t (*svc_migrate_info)(uint64_t *resident_cpu); + void (*svc_on)(u_register_t target_cpu); + int32_t (*svc_off)(u_register_t __unused); + void (*svc_suspend)(u_register_t max_off_pwrlvl); + void (*svc_on_finish)(u_register_t __unused); + void (*svc_suspend_finish)(u_register_t max_off_pwrlvl); + int32_t (*svc_migrate)(u_register_t from_cpu, u_register_t to_cpu); + int32_t (*svc_migrate_info)(u_register_t *resident_cpu); void (*svc_system_off)(void); void (*svc_system_reset)(void); } spd_pm_ops_t; @@ -328,14 +328,14 @@ void __dead2 psci_power_down_wfi(void); void psci_entrypoint(void); void psci_register_spd_pm_hook(const spd_pm_ops_t *); -uint64_t psci_smc_handler(uint32_t smc_fid, - uint64_t x1, - uint64_t x2, - uint64_t x3, - uint64_t x4, +uintptr_t psci_smc_handler(uint32_t smc_fid, + u_register_t x1, + u_register_t x2, + u_register_t x3, + u_register_t x4, void *cookie, void *handle, - uint64_t flags); + u_register_t flags); /* PSCI setup function */ int psci_setup(void); diff --git a/include/common/bl_common.h b/include/common/bl_common.h index 646a817..3aa0836 100644 --- a/include/common/bl_common.h +++ b/include/common/bl_common.h @@ -137,6 +137,7 @@ #include #include #include +#include #include /* To retain compatibility */ /* @@ -144,28 +145,28 @@ * BL images */ #if SEPARATE_CODE_AND_RODATA -extern unsigned long __TEXT_START__; -extern unsigned long __TEXT_END__; -extern unsigned long __RODATA_START__; -extern unsigned long __RODATA_END__; +extern uintptr_t __TEXT_START__; +extern uintptr_t __TEXT_END__; +extern uintptr_t __RODATA_START__; +extern uintptr_t __RODATA_END__; #else -extern unsigned long __RO_START__; -extern unsigned long __RO_END__; +extern uintptr_t __RO_START__; +extern uintptr_t __RO_END__; #endif #if IMAGE_BL2 -extern unsigned long __BL2_END__; +extern uintptr_t __BL2_END__; #elif IMAGE_BL2U -extern unsigned long __BL2U_END__; +extern uintptr_t __BL2U_END__; #elif IMAGE_BL31 -extern unsigned long __BL31_END__; +extern uintptr_t __BL31_END__; #elif IMAGE_BL32 -extern unsigned long __BL32_END__; +extern uintptr_t __BL32_END__; #endif /* IMAGE_BLX */ #if USE_COHERENT_MEM -extern unsigned long __COHERENT_RAM_START__; -extern unsigned long __COHERENT_RAM_END__; +extern uintptr_t __COHERENT_RAM_START__; +extern uintptr_t __COHERENT_RAM_END__; #endif @@ -174,21 +175,21 @@ * memory is available for its use and how much is already used. ******************************************************************************/ typedef struct meminfo { - uint64_t total_base; + uintptr_t total_base; size_t total_size; - uint64_t free_base; + uintptr_t free_base; size_t free_size; } meminfo_t; typedef struct aapcs64_params { - unsigned long arg0; - unsigned long arg1; - unsigned long arg2; - unsigned long arg3; - unsigned long arg4; - unsigned long arg5; - unsigned long arg6; - unsigned long arg7; + u_register_t arg0; + u_register_t arg1; + u_register_t arg2; + u_register_t arg3; + u_register_t arg4; + u_register_t arg5; + u_register_t arg6; + u_register_t arg7; } aapcs64_params_t; /*************************************************************************** @@ -284,7 +285,7 @@ __builtin_offsetof(entry_point_info_t, args), \ assert_BL31_args_offset_mismatch); -CASSERT(sizeof(unsigned long) == +CASSERT(sizeof(uintptr_t) == __builtin_offsetof(entry_point_info_t, spsr) - \ __builtin_offsetof(entry_point_info_t, pc), \ assert_entrypoint_and_spsr_should_be_adjacent); @@ -292,8 +293,8 @@ /******************************************************************************* * Function & variable prototypes ******************************************************************************/ -unsigned long page_align(unsigned long, unsigned); -unsigned long image_size(unsigned int image_id); +uintptr_t page_align(uintptr_t, unsigned); +size_t image_size(unsigned int image_id); int load_image(meminfo_t *mem_layout, unsigned int image_id, uintptr_t image_base, @@ -307,8 +308,8 @@ extern const char build_message[]; extern const char version_string[]; -void reserve_mem(uint64_t *free_base, size_t *free_size, - uint64_t addr, size_t size); +void reserve_mem(uintptr_t *free_base, size_t *free_size, + uintptr_t addr, size_t size); void print_entry_point_info(const entry_point_info_t *ep_info); diff --git a/include/common/context_mgmt.h b/include/common/context_mgmt.h index a76ecbe..8a38ee5 100644 --- a/include/common/context_mgmt.h +++ b/include/common/context_mgmt.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -63,9 +63,9 @@ void cm_prepare_el3_exit(uint32_t security_state); void cm_el1_sysregs_context_save(uint32_t security_state); void cm_el1_sysregs_context_restore(uint32_t security_state); -void cm_set_elr_el3(uint32_t security_state, uint64_t entrypoint); +void cm_set_elr_el3(uint32_t security_state, uintptr_t entrypoint); void cm_set_elr_spsr_el3(uint32_t security_state, - uint64_t entrypoint, uint32_t spsr); + uintptr_t entrypoint, uint32_t spsr); void cm_write_scr_el3_bit(uint32_t security_state, uint32_t bit_pos, uint32_t value); diff --git a/include/drivers/arm/gic_v3.h b/include/drivers/arm/gic_v3.h index a1b6f1b..c5360ff 100644 --- a/include/drivers/arm/gic_v3.h +++ b/include/drivers/arm/gic_v3.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -41,6 +41,7 @@ #include #include +#include /* GICv3 Re-distributor interface registers & shifts */ @@ -74,7 +75,7 @@ /******************************************************************************* * Function prototypes ******************************************************************************/ -uintptr_t gicv3_get_rdist(uintptr_t gicr_base, uint64_t mpidr); +uintptr_t gicv3_get_rdist(uintptr_t gicr_base, u_register_t mpidr); /******************************************************************************* * GIC Redistributor interface accessors diff --git a/include/drivers/arm/gicv3.h b/include/drivers/arm/gicv3.h index ae6fd91..e915c07 100644 --- a/include/drivers/arm/gicv3.h +++ b/include/drivers/arm/gicv3.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -170,6 +170,7 @@ #ifndef __ASSEMBLY__ #include +#include #define gicv3_is_intr_id_special_identifier(id) \ (((id) >= PENDING_G1S_INTID) && ((id) <= GIC_SPURIOUS_INTERRUPT)) @@ -234,7 +235,7 @@ * a hash function. Otherwise, the "Processor Number" field will be used to * access the array elements. ******************************************************************************/ -typedef unsigned int (*mpidr_hash_fn)(unsigned long mpidr); +typedef unsigned int (*mpidr_hash_fn)(u_register_t mpidr); typedef struct gicv3_driver_data { uintptr_t gicd_base; diff --git a/include/lib/stdlib/machine/_stdint.h b/include/lib/stdlib/machine/_stdint.h index e36c659..9a4f35f 100644 --- a/include/lib/stdlib/machine/_stdint.h +++ b/include/lib/stdlib/machine/_stdint.h @@ -30,6 +30,11 @@ * $FreeBSD$ */ +/* + * Portions copyright (c) 2016, ARM Limited and Contributors. + * All rights reserved. + */ + #ifndef _MACHINE__STDINT_H_ #define _MACHINE__STDINT_H_ @@ -38,12 +43,12 @@ #define INT8_C(c) (c) #define INT16_C(c) (c) #define INT32_C(c) (c) -#define INT64_C(c) (c ## L) +#define INT64_C(c) (c ## LL) #define UINT8_C(c) (c) #define UINT16_C(c) (c) #define UINT32_C(c) (c ## U) -#define UINT64_C(c) (c ## UL) +#define UINT64_C(c) (c ## ULL) #define INTMAX_C(c) INT64_C(c) #define UINTMAX_C(c) UINT64_C(c) @@ -60,19 +65,19 @@ #define INT8_MIN (-0x7f-1) #define INT16_MIN (-0x7fff-1) #define INT32_MIN (-0x7fffffff-1) -#define INT64_MIN (-0x7fffffffffffffffL-1) +#define INT64_MIN (-0x7fffffffffffffffLL-1) /* Maximum values of exact-width signed integer types. */ #define INT8_MAX 0x7f #define INT16_MAX 0x7fff #define INT32_MAX 0x7fffffff -#define INT64_MAX 0x7fffffffffffffffL +#define INT64_MAX 0x7fffffffffffffffLL /* Maximum values of exact-width unsigned integer types. */ #define UINT8_MAX 0xff #define UINT16_MAX 0xffff #define UINT32_MAX 0xffffffffU -#define UINT64_MAX 0xffffffffffffffffUL +#define UINT64_MAX 0xffffffffffffffffULL /* * ISO/IEC 9899:1999 diff --git a/include/plat/arm/common/plat_arm.h b/include/plat/arm/common/plat_arm.h index 06912eb..0ffdb5c 100644 --- a/include/plat/arm/common/plat_arm.h +++ b/include/plat/arm/common/plat_arm.h @@ -45,15 +45,15 @@ /* * Utility functions common to ARM standard platforms */ -void arm_setup_page_tables(unsigned long total_base, - unsigned long total_size, - unsigned long code_start, - unsigned long code_limit, - unsigned long rodata_start, - unsigned long rodata_limit +void arm_setup_page_tables(uintptr_t total_base, + size_t total_size, + uintptr_t code_start, + uintptr_t code_limit, + uintptr_t rodata_start, + uintptr_t rodata_limit #if USE_COHERENT_MEM - , unsigned long coh_start, - unsigned long coh_limit + , uintptr_t coh_start, + uintptr_t coh_limit #endif ); diff --git a/include/plat/common/platform.h b/include/plat/common/platform.h index 390721f..1d2a373 100644 --- a/include/plat/common/platform.h +++ b/include/plat/common/platform.h @@ -83,7 +83,7 @@ /******************************************************************************* * Optional common functions (may be overridden) ******************************************************************************/ -unsigned long plat_get_my_stack(void); +uintptr_t plat_get_my_stack(void); void plat_report_exception(unsigned long); int plat_crash_console_init(void); int plat_crash_console_putc(int c); diff --git a/lib/locks/bakery/bakery_lock_normal.c b/lib/locks/bakery/bakery_lock_normal.c index 45b870b..efc1b57 100644 --- a/lib/locks/bakery/bakery_lock_normal.c +++ b/lib/locks/bakery/bakery_lock_normal.c @@ -82,13 +82,13 @@ #define write_cache_op(addr, cached) \ do { \ - (cached ? dccvac((uint64_t)addr) :\ - dcivac((uint64_t)addr));\ + (cached ? dccvac((uintptr_t)addr) :\ + dcivac((uintptr_t)addr));\ dsbish();\ } while (0) #define read_cache_op(addr, cached) if (cached) \ - dccivac((uint64_t)addr) + dccivac((uintptr_t)addr) static unsigned int bakery_get_ticket(bakery_lock_t *lock, unsigned int me, int is_cached) diff --git a/lib/xlat_tables/aarch64/xlat_tables.c b/lib/xlat_tables/aarch64/xlat_tables.c index 19eb7d5..f432237 100644 --- a/lib/xlat_tables/aarch64/xlat_tables.c +++ b/lib/xlat_tables/aarch64/xlat_tables.c @@ -47,7 +47,6 @@ CASSERT(ADDR_SPACE_SIZE >= (1ull << 31) && ADDR_SPACE_SIZE <= (1ull << 39) && IS_POWER_OF_TWO(ADDR_SPACE_SIZE), assert_valid_addr_space_size); -#define UNSET_DESC ~0ul #define NUM_L1_ENTRIES (ADDR_SPACE_SIZE >> L1_XLAT_ADDRESS_SHIFT) static uint64_t l1_xlation_table[NUM_L1_ENTRIES] diff --git a/lib/xlat_tables/xlat_tables_common.c b/lib/xlat_tables/xlat_tables_common.c index 71e3efc..33784c2 100644 --- a/lib/xlat_tables/xlat_tables_common.c +++ b/lib/xlat_tables/xlat_tables_common.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -52,7 +53,7 @@ #define debug_print(...) ((void)0) #endif -#define UNSET_DESC ~0ul +#define UNSET_DESC ~0ull static uint64_t xlat_tables[MAX_XLAT_TABLES][XLAT_TABLE_ENTRIES] __aligned(XLAT_TABLE_SIZE) __section("xlat_table"); @@ -313,9 +314,9 @@ unsigned level_size_shift = L1_XLAT_ADDRESS_SHIFT - (level - 1) * XLAT_TABLE_ENTRIES_SHIFT; unsigned level_size = 1 << level_size_shift; - unsigned long long level_index_mask = - ((unsigned long long) XLAT_TABLE_ENTRIES_MASK) - << level_size_shift; + u_register_t level_index_mask = + (u_register_t)(((u_register_t) XLAT_TABLE_ENTRIES_MASK) + << level_size_shift); assert(level > 0 && level <= 3); @@ -357,7 +358,7 @@ /* Area not covered by a region so need finer table */ uint64_t *new_table = xlat_tables[next_xlat++]; assert(next_xlat <= MAX_XLAT_TABLES); - desc = TABLE_DESC | (uint64_t)new_table; + desc = TABLE_DESC | (uintptr_t)new_table; /* Recurse to fill in new table */ mm = init_xlation_table_inner(mm, base_va, diff --git a/plat/arm/board/fvp/aarch64/fvp_helpers.S b/plat/arm/board/fvp/aarch64/fvp_helpers.S index 884fee8..6a7ad23 100644 --- a/plat/arm/board/fvp/aarch64/fvp_helpers.S +++ b/plat/arm/board/fvp/aarch64/fvp_helpers.S @@ -127,7 +127,7 @@ endfunc plat_secondary_cold_boot_setup /* --------------------------------------------------------------------- - * unsigned long plat_get_my_entrypoint (void); + * uintptr_t plat_get_my_entrypoint (void); * * Main job of this routine is to distinguish between a cold and warm * boot. On FVP, this information can be queried from the power diff --git a/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c b/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c index e004281..c8df78c 100644 --- a/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c +++ b/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -41,12 +41,12 @@ */ ARM_INSTANTIATE_LOCK -unsigned int fvp_pwrc_get_cpu_wkr(unsigned long mpidr) +unsigned int fvp_pwrc_get_cpu_wkr(u_register_t mpidr) { return PSYSR_WK(fvp_pwrc_read_psysr(mpidr)); } -unsigned int fvp_pwrc_read_psysr(unsigned long mpidr) +unsigned int fvp_pwrc_read_psysr(u_register_t mpidr) { unsigned int rc; arm_lock_get(); @@ -56,21 +56,21 @@ return rc; } -void fvp_pwrc_write_pponr(unsigned long mpidr) +void fvp_pwrc_write_pponr(u_register_t mpidr) { arm_lock_get(); mmio_write_32(PWRC_BASE + PPONR_OFF, (unsigned int) mpidr); arm_lock_release(); } -void fvp_pwrc_write_ppoffr(unsigned long mpidr) +void fvp_pwrc_write_ppoffr(u_register_t mpidr) { arm_lock_get(); mmio_write_32(PWRC_BASE + PPOFFR_OFF, (unsigned int) mpidr); arm_lock_release(); } -void fvp_pwrc_set_wen(unsigned long mpidr) +void fvp_pwrc_set_wen(u_register_t mpidr) { arm_lock_get(); mmio_write_32(PWRC_BASE + PWKUPR_OFF, @@ -78,7 +78,7 @@ arm_lock_release(); } -void fvp_pwrc_clr_wen(unsigned long mpidr) +void fvp_pwrc_clr_wen(u_register_t mpidr) { arm_lock_get(); mmio_write_32(PWRC_BASE + PWKUPR_OFF, @@ -86,7 +86,7 @@ arm_lock_release(); } -void fvp_pwrc_write_pcoffr(unsigned long mpidr) +void fvp_pwrc_write_pcoffr(u_register_t mpidr) { arm_lock_get(); mmio_write_32(PWRC_BASE + PCOFFR_OFF, (unsigned int) mpidr); diff --git a/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h b/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h index 3dc9aad..1dbf128 100644 --- a/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h +++ b/plat/arm/board/fvp/drivers/pwrc/fvp_pwrc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -64,13 +64,13 @@ /******************************************************************************* * Function & variable prototypes ******************************************************************************/ -void fvp_pwrc_write_pcoffr(unsigned long); -void fvp_pwrc_write_ppoffr(unsigned long); -void fvp_pwrc_write_pponr(unsigned long); -void fvp_pwrc_set_wen(unsigned long); -void fvp_pwrc_clr_wen(unsigned long); -unsigned int fvp_pwrc_read_psysr(unsigned long); -unsigned int fvp_pwrc_get_cpu_wkr(unsigned long); +void fvp_pwrc_write_pcoffr(u_register_t); +void fvp_pwrc_write_ppoffr(u_register_t); +void fvp_pwrc_write_pponr(u_register_t); +void fvp_pwrc_set_wen(u_register_t); +void fvp_pwrc_clr_wen(u_register_t); +unsigned int fvp_pwrc_read_psysr(u_register_t); +unsigned int fvp_pwrc_get_cpu_wkr(u_register_t); #endif /*__ASSEMBLY__*/ diff --git a/plat/arm/board/juno/aarch64/juno_helpers.S b/plat/arm/board/juno/aarch64/juno_helpers.S index 377b0cb..9291fa4 100644 --- a/plat/arm/board/juno/aarch64/juno_helpers.S +++ b/plat/arm/board/juno/aarch64/juno_helpers.S @@ -206,7 +206,7 @@ endfunc plat_reset_handler /* ----------------------------------------------------- - * unsigned int plat_arm_calc_core_pos(uint64_t mpidr) + * unsigned int plat_arm_calc_core_pos(u_register_t mpidr) * Helper function to calculate the core position. * ----------------------------------------------------- */ diff --git a/plat/arm/common/aarch64/arm_common.c b/plat/arm/common/aarch64/arm_common.c index 7c0b93d..33d2b06 100644 --- a/plat/arm/common/aarch64/arm_common.c +++ b/plat/arm/common/aarch64/arm_common.c @@ -59,16 +59,16 @@ * - Read-only data section; * - Coherent memory region, if applicable. */ -void arm_setup_page_tables(unsigned long total_base, - unsigned long total_size, - unsigned long code_start, - unsigned long code_limit, - unsigned long rodata_start, - unsigned long rodata_limit +void arm_setup_page_tables(uintptr_t total_base, + size_t total_size, + uintptr_t code_start, + uintptr_t code_limit, + uintptr_t rodata_start, + uintptr_t rodata_limit #if USE_COHERENT_MEM , - unsigned long coh_start, - unsigned long coh_limit + uintptr_t coh_start, + uintptr_t coh_limit #endif ) { diff --git a/plat/arm/common/aarch64/arm_helpers.S b/plat/arm/common/aarch64/arm_helpers.S index a0338f1..d782020 100644 --- a/plat/arm/common/aarch64/arm_helpers.S +++ b/plat/arm/common/aarch64/arm_helpers.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -49,7 +49,7 @@ endfunc plat_my_core_pos /* ----------------------------------------------------- - * unsigned int plat_arm_calc_core_pos(uint64_t mpidr) + * unsigned int plat_arm_calc_core_pos(u_register_t mpidr) * Helper function to calculate the core position. * With this function: CorePos = (ClusterId * 4) + * CoreId diff --git a/plat/arm/common/arm_bl31_setup.c b/plat/arm/common/arm_bl31_setup.c index 87cafce..d6997cd 100644 --- a/plat/arm/common/arm_bl31_setup.c +++ b/plat/arm/common/arm_bl31_setup.c @@ -38,7 +38,7 @@ #include #include -#define BL31_END (unsigned long)(&__BL31_END__) +#define BL31_END (uintptr_t)(&__BL31_END__) #if USE_COHERENT_MEM /* @@ -48,8 +48,8 @@ * __COHERENT_RAM_START__ and __COHERENT_RAM_END__ linker symbols * refer to page-aligned addresses. */ -#define BL31_COHERENT_RAM_BASE (unsigned long)(&__COHERENT_RAM_START__) -#define BL31_COHERENT_RAM_LIMIT (unsigned long)(&__COHERENT_RAM_END__) +#define BL31_COHERENT_RAM_BASE (uintptr_t)(&__COHERENT_RAM_START__) +#define BL31_COHERENT_RAM_LIMIT (uintptr_t)(&__COHERENT_RAM_END__) #endif /* diff --git a/plat/arm/css/common/aarch64/css_helpers.S b/plat/arm/css/common/aarch64/css_helpers.S index 0763a3e..92b0e81 100644 --- a/plat/arm/css/common/aarch64/css_helpers.S +++ b/plat/arm/css/common/aarch64/css_helpers.S @@ -70,7 +70,7 @@ endfunc plat_secondary_cold_boot_setup /* --------------------------------------------------------------------- - * unsigned long plat_get_my_entrypoint (void); + * uintptr_t plat_get_my_entrypoint (void); * * Main job of this routine is to distinguish between a cold and a warm * boot. On CSS platforms, this distinction is based on the contents of @@ -90,7 +90,7 @@ endfunc plat_get_my_entrypoint /* ----------------------------------------------------------- - * unsigned int css_calc_core_pos_swap_cluster(uint64_t mpidr) + * unsigned int css_calc_core_pos_swap_cluster(u_register_t mpidr) * Utility function to calculate the core position by * swapping the cluster order. This is necessary in order to * match the format of the boot information passed by the SCP diff --git a/plat/common/aarch64/platform_mp_stack.S b/plat/common/aarch64/platform_mp_stack.S index a077f65..e3063d1 100644 --- a/plat/common/aarch64/platform_mp_stack.S +++ b/plat/common/aarch64/platform_mp_stack.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -159,7 +159,7 @@ endfunc_deprecated platform_set_stack /* ----------------------------------------------------- - * unsigned long plat_get_my_stack () + * uintptr_t plat_get_my_stack () * * For the current CPU, this function returns the stack * pointer for a stack allocated in device memory. diff --git a/plat/common/aarch64/platform_up_stack.S b/plat/common/aarch64/platform_up_stack.S index 24b3a71..5b82630 100644 --- a/plat/common/aarch64/platform_up_stack.S +++ b/plat/common/aarch64/platform_up_stack.S @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -40,7 +40,7 @@ .globl platform_get_stack /* ----------------------------------------------------- - * unsigned long plat_get_my_stack () + * uintptr_t plat_get_my_stack () * * For cold-boot BL images, only the primary CPU needs a * stack. This function returns the stack pointer for a diff --git a/services/std_svc/psci/psci_common.c b/services/std_svc/psci/psci_common.c index 5090037..a651d99 100644 --- a/services/std_svc/psci/psci_common.c +++ b/services/std_svc/psci/psci_common.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -596,10 +596,10 @@ uintptr_t entrypoint, u_register_t context_id) { - unsigned long ep_attr, sctlr; + u_register_t ep_attr, sctlr; unsigned int daif, ee, mode; - unsigned long ns_scr_el3 = read_scr_el3(); - unsigned long ns_sctlr_el1 = read_sctlr_el1(); + u_register_t ns_scr_el3 = read_scr_el3(); + u_register_t ns_sctlr_el1 = read_sctlr_el1(); sctlr = ns_scr_el3 & SCR_HCE_BIT ? read_sctlr_el2() : ns_sctlr_el1; ee = 0; @@ -839,9 +839,9 @@ for (idx = 0; idx < PLATFORM_CORE_COUNT; idx++) { state = psci_get_cpu_local_state_by_idx(idx); state_type = find_local_state_type(state); - INFO(" CPU Node : MPID 0x%lx, parent_node %d," + INFO(" CPU Node : MPID 0x%llx, parent_node %d," " State %s (0x%x)\n", - psci_cpu_pd_nodes[idx].mpidr, + (unsigned long long)psci_cpu_pd_nodes[idx].mpidr, psci_cpu_pd_nodes[idx].parent_node, psci_state_type_str[state_type], psci_get_cpu_local_state_by_idx(idx)); diff --git a/services/std_svc/psci/psci_main.c b/services/std_svc/psci/psci_main.c index 86f45ca..86df9a1 100644 --- a/services/std_svc/psci/psci_main.c +++ b/services/std_svc/psci/psci_main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -327,14 +327,14 @@ /******************************************************************************* * PSCI top level handler for servicing SMCs. ******************************************************************************/ -uint64_t psci_smc_handler(uint32_t smc_fid, - uint64_t x1, - uint64_t x2, - uint64_t x3, - uint64_t x4, +uintptr_t psci_smc_handler(uint32_t smc_fid, + u_register_t x1, + u_register_t x2, + u_register_t x3, + u_register_t x4, void *cookie, void *handle, - uint64_t flags) + u_register_t flags) { if (is_caller_secure(flags)) SMC_RET1(handle, SMC_UNK); diff --git a/services/std_svc/psci/psci_private.h b/services/std_svc/psci/psci_private.h index ffb0732..f42ce55 100644 --- a/services/std_svc/psci/psci_private.h +++ b/services/std_svc/psci/psci_private.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013-2015, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -214,7 +214,7 @@ int psci_spd_migrate_info(u_register_t *mpidr); /* Private exported functions from psci_on.c */ -int psci_cpu_on_start(unsigned long target_cpu, +int psci_cpu_on_start(u_register_t target_cpu, entry_point_info_t *ep); void psci_cpu_on_finish(unsigned int cpu_idx, diff --git a/services/std_svc/std_svc_setup.c b/services/std_svc/std_svc_setup.c index 6cb0319..992a600 100644 --- a/services/std_svc/std_svc_setup.c +++ b/services/std_svc/std_svc_setup.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -54,14 +54,14 @@ * Top-level Standard Service SMC handler. This handler will in turn dispatch * calls to PSCI SMC handler */ -uint64_t std_svc_smc_handler(uint32_t smc_fid, - uint64_t x1, - uint64_t x2, - uint64_t x3, - uint64_t x4, +uintptr_t std_svc_smc_handler(uint32_t smc_fid, + u_register_t x1, + u_register_t x2, + u_register_t x3, + u_register_t x4, void *cookie, void *handle, - uint64_t flags) + u_register_t flags) { /* * Dispatch PSCI calls to PSCI SMC handler and return its return