Use unsigned long long instead of uintptr_t in TZC400/DMC500 drivers
authorYatharth Kochar <yatharth.kochar@arm.com>
Fri, 8 Apr 2016 13:40:44 +0000 (14:40 +0100)
committerYatharth Kochar <yatharth.kochar@arm.com>
Tue, 12 Apr 2016 15:51:39 +0000 (16:51 +0100)
Currently the `tzc400_configure_region` and `tzc_dmc500_configure_region`
functions uses uintptr_t as the data type for `region_top` and `region_base`
variables, which will be converted to 32/64 bits for AArch32/AArch64
respectively. But the expectation is to keep these addresses at least 64 bit.

This patch modifies the data types to make it at least 64 bit by using
unsigned long long instead of uintptr_t for the `region_top` and
`region_base` variables. It also modifies the associated macros
`_tzc##fn_name##_write_region_xxx` accordingly.

Change-Id: I4e3c6a8a39ad04205cf0f3bda336c3970b15a28b

drivers/arm/tzc/tzc400.c
drivers/arm/tzc/tzc_common_private.c
drivers/arm/tzc/tzc_dmc500.c
include/drivers/arm/tzc400.h
include/drivers/arm/tzc_dmc500.h

index ee6bf8db2e9219f9dc189738ff143c939616b08a..e533587251cb6676be83d0498fa20e0f56d9b4b6 100644 (file)
@@ -191,8 +191,8 @@ void tzc400_configure_region0(tzc_region_attributes_t sec_attr,
  */
 void tzc400_configure_region(unsigned int filters,
                          int region,
-                         uintptr_t region_base,
-                         uintptr_t region_top,
+                         unsigned long long region_base,
+                         unsigned long long region_top,
                          tzc_region_attributes_t sec_attr,
                          unsigned int nsaid_permissions)
 {
index f570daf3daa5fd4a67a9ccc9f395dd3c1131792d..dae6c3acbe82e99cdb11db91973d6cfcc50856d7 100644 (file)
 
 #define DEFINE_TZC_COMMON_WRITE_REGION_BASE(fn_name, macro_name)       \
        static inline void _tzc##fn_name##_write_region_base(           \
-                                               uintptr_t base,         \
-                                               int region_no,          \
-                                               uintptr_t region_base)  \
+                                       uintptr_t base,                 \
+                                       int region_no,                  \
+                                       unsigned long long region_base) \
        {                                                               \
                mmio_write_32(base +                                    \
                        TZC_REGION_OFFSET(                              \
                                TZC_##macro_name##_REGION_SIZE,         \
                                region_no) +                            \
-                               TZC_##macro_name##_REGION_BASE_LOW_0_OFFSET,    \
-                       (unsigned int)region_base);                     \
+                       TZC_##macro_name##_REGION_BASE_LOW_0_OFFSET,    \
+                       (uint32_t)region_base);                         \
                mmio_write_32(base +                                    \
                        TZC_REGION_OFFSET(                              \
                                TZC_##macro_name##_REGION_SIZE,         \
                                region_no) +                            \
                        TZC_##macro_name##_REGION_BASE_HIGH_0_OFFSET,   \
-                       (unsigned int)(region_base >> 32));             \
+                       (uint32_t)(region_base >> 32));                 \
        }
 
 #define DEFINE_TZC_COMMON_WRITE_REGION_TOP(fn_name, macro_name)                \
        static inline void _tzc##fn_name##_write_region_top(            \
-                                               uintptr_t base,         \
-                                               int region_no,          \
-                                               uintptr_t region_top)   \
+                                       uintptr_t base,                 \
+                                       int region_no,                  \
+                                       unsigned long long region_top)  \
        {                                                               \
                mmio_write_32(base +                                    \
                        TZC_REGION_OFFSET                               \
                                (TZC_##macro_name##_REGION_SIZE,        \
                                region_no) +                            \
                        TZC_##macro_name##_REGION_TOP_LOW_0_OFFSET,     \
-                       (unsigned int)region_top);                      \
+                       (uint32_t)region_top);                  \
                mmio_write_32(base +                                    \
                        TZC_REGION_OFFSET(                              \
                                TZC_##macro_name##_REGION_SIZE,         \
                                region_no) +                            \
                        TZC_##macro_name##_REGION_TOP_HIGH_0_OFFSET,    \
-                       (unsigned int)(region_top >> 32));              \
+                       (uint32_t)(region_top >> 32));          \
        }
 
 #define DEFINE_TZC_COMMON_WRITE_REGION_ATTRIBUTES(fn_name, macro_name) \
        void _tzc##fn_name##_configure_region(uintptr_t base,           \
                                unsigned int filters,                   \
                                int region_no,                          \
-                               uintptr_t region_base,                  \
-                               uintptr_t region_top,                   \
+                               unsigned long long region_base,         \
+                               unsigned long long region_top,          \
                                tzc_region_attributes_t sec_attr,       \
                                unsigned int nsaid_permissions) \
        {                                                               \
                VERBOSE("TrustZone : Configuring region "               \
                        "(TZC Interface Base: %p, region_no = %d)"      \
                        "...\n", (void *)base, region_no);              \
-               VERBOSE("TrustZone : ... base = %p, top = %p,"          \
-                       "\n", (void *)region_base, (void *)region_top);\
+               VERBOSE("TrustZone : ... base = %llx, top = %llx,"      \
+                       "\n", region_base, region_top);\
                VERBOSE("TrustZone : ... sec_attr = 0x%x,"              \
                        " ns_devs = 0x%x)\n",                           \
                        sec_attr, nsaid_permissions);                   \
index 16a53a4f4c8644f02c8454ab9429679278b4d02e..b2f0bf6725c4080690fa57679a64c0561125518d 100644 (file)
@@ -196,8 +196,8 @@ void tzc_dmc500_configure_region0(tzc_region_attributes_t sec_attr,
  * for this region (see comment for that function).
  */
 void tzc_dmc500_configure_region(int region_no,
-                       uintptr_t region_base,
-                       uintptr_t region_top,
+                       unsigned long long region_base,
+                       unsigned long long region_top,
                        tzc_region_attributes_t sec_attr,
                        unsigned int nsaid_permissions)
 {
index 3085688920b182fdef0a60a3f2f4cb072be9872c..d8af7e157e287fb66a0d6e8f6e54937393e0bb4f 100644 (file)
@@ -139,8 +139,8 @@ void tzc400_configure_region0(tzc_region_attributes_t sec_attr,
                           unsigned int ns_device_access);
 void tzc400_configure_region(unsigned int filters,
                          int region,
-                         uintptr_t region_base,
-                         uintptr_t region_top,
+                         unsigned long long region_base,
+                         unsigned long long region_top,
                          tzc_region_attributes_t sec_attr,
                          unsigned int ns_device_access);
 void tzc400_set_action(tzc_action_t action);
@@ -157,8 +157,8 @@ static inline void tzc_configure_region0(
 static inline void tzc_configure_region(
                          unsigned int filters,
                          int region,
-                         uintptr_t region_base,
-                         uintptr_t region_top,
+                         unsigned long long region_base,
+                         unsigned long long region_top,
                          tzc_region_attributes_t sec_attr,
                          unsigned int ns_device_access) __deprecated;
 static inline void tzc_set_action(tzc_action_t action) __deprecated;
@@ -180,8 +180,8 @@ static inline void tzc_configure_region0(
 static inline void tzc_configure_region(
                          unsigned int filters,
                          int region,
-                         uintptr_t region_base,
-                         uintptr_t region_top,
+                         unsigned long long region_base,
+                         unsigned long long region_top,
                          tzc_region_attributes_t sec_attr,
                          unsigned int ns_device_access)
 {
index 70f8ad2d2740f9b738d0410bd738bad3f4bc367e..e21818fe21eb23efbf3754ff0d0d8ebb3f0f3b60 100644 (file)
@@ -160,8 +160,8 @@ void tzc_dmc500_driver_init(const tzc_dmc500_driver_data_t *plat_driver_data);
 void tzc_dmc500_configure_region0(tzc_region_attributes_t sec_attr,
                                unsigned int nsaid_permissions);
 void tzc_dmc500_configure_region(int region_no,
-                               uintptr_t region_base,
-                               uintptr_t region_top,
+                               unsigned long long region_base,
+                               unsigned long long region_top,
                                tzc_region_attributes_t sec_attr,
                                unsigned int nsaid_permissions);
 void tzc_dmc500_set_action(tzc_action_t action);