[msm8655]: Add feature flag to build Trustzone with LK

Add ENABLE_TRUSTZONE compile time flag to allow Trustzone
initializations with LK. The linker scripts move LK up in
memory, making room for TZ sysini to be placed at reset
vector and take control of Scorpion from power up itself.

This is a partial solution to enable TZ as part of LK.The
TZ/code/image itself is currently not part of LK tree and
is managed separately.As a result, this feature will be
turned off by default.

Change-Id: I1b4e4b380c415428fe22f34563a97440082befee
diff --git a/arch/arm/crt0.S b/arch/arm/crt0.S
index a1777f0..cb6e552 100644
--- a/arch/arm/crt0.S
+++ b/arch/arm/crt0.S
@@ -37,6 +37,11 @@
 	b	arm_fiq
 
 reset:
+
+#ifdef ENABLE_TRUSTZONE
+	/*Add reference to TZ symbol so linker includes it in final image */
+	ldr r7, =_binary_tzbsp_tzbsp_bin_start
+#endif
 	/* do some cpu setup */
 #if ARM_WITH_CP15
 	mrc		p15, 0, r0, c1, c0, 0
@@ -47,12 +52,19 @@
 		/* enable alignment faults */
 	orr		r0, r0, #(1<<1)
 	mcr		p15, 0, r0, c1, c0, 0
+#ifdef ENABLE_TRUSTZONE
+  /*nkazi: not needed ? Setting VBAR to location of new vector table : 0x80000      */
+ ldr             r0, =0x00080000
+ mcr             p15, 0, r0, c12, c0, 0
+#endif
 #endif
 
 #if WITH_CPU_EARLY_INIT
 	/* call platform/arch/etc specific init code */
+#ifndef ENABLE_TRUSTZONE
+	/* Not needed when TrustZone is the first bootloader that runs.*/
 	bl __cpu_early_init
-
+#endif
 	/* declare return address as global to avoid using stack */
 .globl _cpu_early_init_complete
 	_cpu_early_init_complete: