diff --git a/bcc.cpp b/bcc.cpp
index c00d1f7..84b20b8 100644
--- a/bcc.cpp
+++ b/bcc.cpp
@@ -2840,16 +2840,33 @@
         if (mCodeDataAddr && mCodeDataAddr != MAP_FAILED) {
           // Cheers!  Mapped at the cached address successfully.
 
+          // Update the BccMmapImgAddrTaken table (if required)
           if (mCacheHdr->cachedCodeDataAddr >= BCC_MMAP_IMG_BEGIN) {
             size_t offset = mCacheHdr->cachedCodeDataAddr - BCC_MMAP_IMG_BEGIN;
 
             if ((offset % BCC_MMAP_IMG_SIZE) == 0 &&
                 (offset / BCC_MMAP_IMG_SIZE) < BCC_MMAP_IMG_COUNT) {
-              // Update the BccMmapImgAddrTaken table (if required)
               Compiler::BccMmapImgAddrTaken[offset / BCC_MMAP_IMG_SIZE] = true;
             }
           }
 
+#if 1
+          // Check the checksum of code and data
+          {
+            uint32_t sum = mCacheHdr->checksum;
+            uint32_t *ptr = (uint32_t *)mCodeDataAddr;
+
+            for (size_t i = 0; i < BCC_MMAP_IMG_SIZE / sizeof(uint32_t); ++i) {
+              sum ^= *ptr++;
+            }
+
+            if (sum != 0) {
+              LOGE("Checksum check failed\n");
+              goto bail;
+            }
+          }
+#endif
+
           flock(mCacheFd, LOCK_UN);
           return 0; // loadCacheFile succeed!
         }
@@ -3585,7 +3602,23 @@
     offset += hdr->dataSize;
 
     // Checksum
+#if 1
+    {
+      // Note: This is an simple checksum implementation that are using xor
+      // to calculate even parity (for code and data only).
+
+      uint32_t sum = 0;
+      uint32_t *ptr = (uint32_t *)mCodeDataAddr;
+
+      for (size_t i = 0; i < BCC_MMAP_IMG_SIZE / sizeof(uint32_t); ++i) {
+        sum ^= *ptr++;
+      }
+
+      hdr->checksum = sum;
+    }
+#else
     hdr->checksum = 0; // Set Field checksum. TODO(all)
+#endif
 
     // Write Header
     sysWriteFully(mCacheFd, reinterpret_cast<char const *>(hdr),
