diff --git a/include/ethosu_device.h b/include/ethosu_device.h
index 35f7924..0221ad1 100644
--- a/include/ethosu_device.h
+++ b/include/ethosu_device.h
@@ -56,7 +56,7 @@
 
 struct ethosu_device
 {
-    volatile uint32_t *base_address;
+    volatile uintptr_t base_address;
     uint32_t proto;
     uint32_t pmcr;
     uint32_t pmccntr[2];
diff --git a/src/ethosu_common.h b/src/ethosu_common.h
index 30f07be..bf3aff0 100644
--- a/src/ethosu_common.h
+++ b/src/ethosu_common.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019-2020 Arm Limited. All rights reserved.
+ * Copyright (c) 2019-2021 Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: Apache-2.0
  *
@@ -105,12 +105,6 @@
 #define LOG_DEBUG(format, ...)
 #endif
 
-#if defined(ASSERT_DISABLE)
-#define ASSERT(args)
-#else
-#define ASSERT(args) assert(args)
-#endif
-
 #define UNUSED(x) ((void)x)
 
 #define VER_STR(X) VNUM_STR(X)
diff --git a/src/ethosu_device.c b/src/ethosu_device.c
index 1667325..c7cded9 100644
--- a/src/ethosu_device.c
+++ b/src/ethosu_device.c
@@ -40,7 +40,7 @@
                                         uint32_t privilege_enable)
 {
 #if !defined(ARM_NPU_STUB)
-    dev->base_address = (volatile uint32_t *)base_address;
+    dev->base_address = (volatile uintptr_t)base_address;
     dev->secure       = secure_enable;
     dev->privileged   = privilege_enable;
 
@@ -105,10 +105,10 @@
     enum ethosu_error_codes ret_code = ETHOSU_SUCCESS;
 
 #if !defined(ARM_NPU_STUB)
-    ASSERT(num_base_addr <= ETHOSU_DRIVER_BASEP_INDEXES);
+    assert(num_base_addr <= ETHOSU_DRIVER_BASEP_INDEXES);
 
     uint64_t qbase = (uintptr_t)cmd_stream_ptr + BASE_POINTER_OFFSET;
-    ASSERT(qbase <= ADDRESS_MASK);
+    assert(qbase <= ADDRESS_MASK);
     LOG_DEBUG("QBASE=0x%016llx, QSIZE=%u, base_pointer_offset=0x%08x\n", qbase, cms_length, BASE_POINTER_OFFSET);
     ethosu_write_reg(dev, NPU_REG_QBASE0, qbase & 0xffffffff);
     ethosu_write_reg(dev, NPU_REG_QBASE1, qbase >> 32);
@@ -117,7 +117,7 @@
     for (int i = 0; i < num_base_addr; i++)
     {
         uint64_t addr = base_addr[i] + BASE_POINTER_OFFSET;
-        ASSERT(addr <= ADDRESS_MASK);
+        assert(addr <= ADDRESS_MASK);
         LOG_DEBUG("BASEP%d=0x%016llx\n", i, addr);
         ethosu_write_reg(dev, NPU_REG_BASEP0 + (2 * i) * BASEP_OFFSET, addr & 0xffffffff);
         ethosu_write_reg(dev, NPU_REG_BASEP0 + (2 * i + 1) * BASEP_OFFSET, addr >> 32);
@@ -130,7 +130,7 @@
     stream_length = cms_length;
     UNUSED(cmd_stream_ptr);
     UNUSED(base_addr);
-    ASSERT(num_base_addr < ETHOSU_DRIVER_BASEP_INDEXES);
+    assert(num_base_addr < ETHOSU_DRIVER_BASEP_INDEXES);
 #if defined(NDEBUG)
     UNUSED(num_base_addr);
 #endif
@@ -259,7 +259,7 @@
 #if !defined(ARM_NPU_STUB)
     uint32_t address = start_address;
 
-    ASSERT((start_address + num_reg) < ID_REGISTERS_SIZE);
+    assert((start_address + num_reg) < ID_REGISTERS_SIZE);
 
     for (int i = 0; i < num_reg; i++)
     {
@@ -564,10 +564,10 @@
 uint32_t ethosu_read_reg(struct ethosu_device *dev, uint32_t address)
 {
 #if !defined(ARM_NPU_STUB)
-    ASSERT(dev->base_address != 0);
-    ASSERT(address % 4 == 0);
+    assert(dev->base_address != 0);
+    assert(address % 4 == 0);
 
-    volatile uint32_t *reg = dev->base_address + address / sizeof(uint32_t);
+    volatile uint32_t *reg = dev->base_address + address;
     return *reg;
 #else
     UNUSED(dev);
@@ -580,10 +580,10 @@
 void ethosu_write_reg(struct ethosu_device *dev, uint32_t address, uint32_t value)
 {
 #if !defined(ARM_NPU_STUB)
-    ASSERT(dev->base_address != 0);
-    ASSERT(address % 4 == 0);
+    assert(dev->base_address != 0);
+    assert(address % 4 == 0);
 
-    volatile uint32_t *reg = dev->base_address + address / sizeof(uint32_t);
+    volatile uint32_t *reg = dev->base_address + address;
     *reg                   = value;
 #else
     UNUSED(dev);
diff --git a/src/ethosu_driver.c b/src/ethosu_driver.c
index 5910fa4..4c1b100 100644
--- a/src/ethosu_driver.c
+++ b/src/ethosu_driver.c
@@ -229,7 +229,7 @@
 
     // Verify that interrupt has been raised
     (void)ethosu_is_irq_raised(&drv->dev, &irq_raised);
-    ASSERT(irq_raised == 1);
+    assert(irq_raised == 1);
     drv->irq_triggered = true;
 
     // Clear interrupt
@@ -237,7 +237,7 @@
 
     // Verify that interrupt has been successfully cleared
     (void)ethosu_is_irq_raised(&drv->dev, &irq_raised);
-    ASSERT(irq_raised == 0);
+    assert(irq_raised == 0);
 
     if (ethosu_status_has_error(&drv->dev))
     {
diff --git a/src/ethosu_pmu.c b/src/ethosu_pmu.c
index a88dfb6..5872d18 100644
--- a/src/ethosu_pmu.c
+++ b/src/ethosu_pmu.c
@@ -106,7 +106,7 @@
 
 void ETHOSU_PMU_Set_EVTYPER(struct ethosu_driver *drv, uint32_t num, enum ethosu_pmu_event_type type)
 {
-    ASSERT(num < ETHOSU_PMU_NCOUNTERS);
+    assert(num < ETHOSU_PMU_NCOUNTERS);
     uint32_t val = pmu_event_value(type);
     LOG_DEBUG("%s: num=%u, type=%d, val=%u\n", __FUNCTION__, num, type, val);
     ethosu_write_reg_shadow(&drv->dev, NPU_REG_PMEVTYPER(num), val, &drv->dev.pmu_evtypr[num]);
@@ -114,7 +114,7 @@
 
 enum ethosu_pmu_event_type ETHOSU_PMU_Get_EVTYPER(struct ethosu_driver *drv, uint32_t num)
 {
-    ASSERT(num < ETHOSU_PMU_NCOUNTERS);
+    assert(num < ETHOSU_PMU_NCOUNTERS);
     uint32_t val                    = drv->dev.pmu_evtypr[num];
     enum ethosu_pmu_event_type type = pmu_event_type(val);
     LOG_DEBUG("%s: num=%u, type=%d, val=%u\n", __FUNCTION__, num, type, val);
@@ -208,7 +208,7 @@
 
 uint32_t ETHOSU_PMU_Get_EVCNTR(struct ethosu_driver *drv, uint32_t num)
 {
-    ASSERT(num < ETHOSU_PMU_NCOUNTERS);
+    assert(num < ETHOSU_PMU_NCOUNTERS);
     uint32_t val = ethosu_read_reg(&drv->dev, NPU_REG_PMEVCNTR(num));
     LOG_DEBUG("%s: num=%u, val=%u, shadow=%u\n", __FUNCTION__, num, val, drv->dev.pmu_evcntr[num]);
 
@@ -226,7 +226,7 @@
 
 void ETHOSU_PMU_Set_EVCNTR(struct ethosu_driver *drv, uint32_t num, uint32_t val)
 {
-    ASSERT(num < ETHOSU_PMU_NCOUNTERS);
+    assert(num < ETHOSU_PMU_NCOUNTERS);
     LOG_DEBUG("%s: num=%u, val=%u\n", __FUNCTION__, num, val);
     ethosu_write_reg(&drv->dev, NPU_REG_PMEVCNTR(num), val);
 }
