diff -ru -x '*atsln' -x '*cproj' -x '*html' same70_softpack_1.5_for_astudio_6.2_7.0/studio/examples/Atmel/SAME70_Xplained/examples_ethernet/gmac_uip_helloworld/main.c same70_softpack_1.5_for_astudio_6.2_7.0_hermes/studio/examples/Atmel/SAME70_Xplained/examples_ethernet/gmac_uip_helloworld/main.c
--- same70_softpack_1.5_for_astudio_6.2_7.0/studio/examples/Atmel/SAME70_Xplained/examples_ethernet/gmac_uip_helloworld/main.c	2015-11-19 03:40:26.000000000 -0600
+++ same70_softpack_1.5_for_astudio_6.2_7.0_hermes/studio/examples/Atmel/SAME70_Xplained/examples_ethernet/gmac_uip_helloworld/main.c	2017-07-10 10:23:09.000000000 -0500
@@ -232,8 +232,12 @@
 	/* Disable watchdog */
 	WDT_Disable(WDT);
 
-	SCB_EnableICache();
-	SCB_EnableDCache();
+	// NAK Note: EnableDCache function was creating problems for hermes because
+	// reads from the CCSIDR weren't working correctly. This doesn't affect the
+	// app since the caches are already enabled on boot, so not worth trying to
+	// debug right now.
+	//SCB_EnableICache(); // COMMENTING FOR HERMES
+	//SCB_EnableDCache(); // COMMENTING FOR HERMES
 
 	printf("-- GMAC uIP Hello World Example %s --\n\r", SOFTPACK_VERSION);
 	printf("-- %s\n\r", BOARD_NAME);
diff -ru -x '*atsln' -x '*cproj' -x '*html' same70_softpack_1.5_for_astudio_6.2_7.0/studio/examples/Atmel/SAME70_Xplained/libraries/libboard/resources_e70/gcc/startup_same70.c same70_softpack_1.5_for_astudio_6.2_7.0_hermes/studio/examples/Atmel/SAME70_Xplained/libraries/libboard/resources_e70/gcc/startup_same70.c
--- same70_softpack_1.5_for_astudio_6.2_7.0/studio/examples/Atmel/SAME70_Xplained/libraries/libboard/resources_e70/gcc/startup_same70.c	2015-11-18 03:59:36.000000000 -0600
+++ same70_softpack_1.5_for_astudio_6.2_7.0_hermes/studio/examples/Atmel/SAME70_Xplained/libraries/libboard/resources_e70/gcc/startup_same70.c	2017-06-28 16:08:35.000000000 -0500
@@ -155,7 +155,7 @@
 void CCW_Handler    (void) __attribute__ ((weak, alias("Dummy_Handler")));
 
 /* Exception Table */
-__attribute__ ((section(".vectors")))
+//__attribute__ ((section(".vectors"))) // COMMENT FOR HERMES
 const DeviceVectors exception_table = {
 
 	/* Configure Initial Stack Pointer, using linker-generated symbols */
@@ -333,6 +333,7 @@
  */
 void Reset_Handler(void)
 {
+#if 0
 	uint32_t *pSrc, *pDest;
 
 	/* Initialize the relocate segment */
@@ -347,10 +348,13 @@
 	/* Clear the zero segment */
 	for (pDest = &_szero; pDest < &_ezero;)
 		*pDest++ = 0;
-
+#endif
 	/* Set the vector table base address */
-	pSrc = (uint32_t *) & _sfixed;
-	SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);
+	//pSrc = (uint32_t *) & _sfixed;
+	//SCB->VTOR = ((uint32_t) pSrc & SCB_VTOR_TBLOFF_Msk);
+
+	SCB->VTOR = ((uint32_t)&exception_table);
+	asm("isb");
 
 #ifdef ENABLE_TCM
 #ifndef FFT_DEMO
diff -ru -x '*atsln' -x '*cproj' -x '*html' same70_softpack_1.5_for_astudio_6.2_7.0/studio/examples/Atmel/SAME70_Xplained/libraries/libchip/include/cmsis/CMSIS/Include/core_cm7.h same70_softpack_1.5_for_astudio_6.2_7.0_hermes/studio/examples/Atmel/SAME70_Xplained/libraries/libchip/include/cmsis/CMSIS/Include/core_cm7.h
--- same70_softpack_1.5_for_astudio_6.2_7.0/studio/examples/Atmel/SAME70_Xplained/libraries/libchip/include/cmsis/CMSIS/Include/core_cm7.h	2015-10-08 04:31:30.000000000 -0500
+++ same70_softpack_1.5_for_astudio_6.2_7.0_hermes/studio/examples/Atmel/SAME70_Xplained/libraries/libchip/include/cmsis/CMSIS/Include/core_cm7.h	2017-07-10 15:57:10.000000000 -0500
@@ -1807,6 +1807,7 @@
 __STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
 {
   NVIC->ISER[(((uint32_t)(int32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
+  asm("isb");
 }
 
 
@@ -1891,10 +1892,12 @@
   if ((int32_t)(IRQn) < 0)
   {
     SCB->SHPR[(((uint32_t)(int32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+	asm("isb"); // HERMES
   }
   else
   {
     NVIC->IP[((uint32_t)(int32_t)IRQn)]                = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL);
+	asm("isb"); // HERMES
   }
 }
 
@@ -2061,6 +2064,7 @@
     __DSB();
     __ISB();
     SCB->ICIALLU = 0UL;                     // invalidate I-Cache
+	asm("isb"); // HERMES
     SCB->CCR |=  (uint32_t)SCB_CCR_IC_Msk;  // enable I-Cache
     __DSB();
     __ISB();
@@ -2114,8 +2118,10 @@
 
     SCB->CSSELR = (0U << 1U) | 0U;          // Level 1 data cache
     __DSB();
+	__ISB(); // For hermes
 
     ccsidr = SCB->CCSIDR;
+	__ISB(); // For hermes
 
                                             // invalidate D-Cache
     sets = (uint32_t)(CCSIDR_SETS(ccsidr));
@@ -2298,6 +2304,7 @@
 
     while (op_size > 0) {
       SCB->DCIMVAC = op_addr;
+	  asm("isb"); // HERMES
       op_addr += linesize;
       op_size -= linesize;
     }
@@ -2398,11 +2405,15 @@
   }
 
   SysTick->LOAD  = (uint32_t)(ticks - 1UL);                         /* set reload register */
+  asm("isb"); // HERMES
   NVIC_SetPriority (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */
   SysTick->VAL   = 0UL;                                             /* Load the SysTick Counter Value */
+  asm("isb"); // HERMES
   SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
                    SysTick_CTRL_TICKINT_Msk   |
                    SysTick_CTRL_ENABLE_Msk;                         /* Enable SysTick IRQ and SysTick Timer */
+
+  asm("isb"); // HERMES
   return (0UL);                                                     /* Function successful */
 }
 
