Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
118dfca457 |
+95
-69
@@ -23,6 +23,8 @@
|
||||
/*===========================================================================*
|
||||
* Defines:
|
||||
*===========================================================================*/
|
||||
//#define FAME_SOFT_FUP
|
||||
|
||||
#define SB_BLS 1
|
||||
#define SB_ECDSA 2
|
||||
|
||||
@@ -34,13 +36,14 @@
|
||||
#define BLS_POINT_WSIZE (FP2_INT_WSIZE * 3)
|
||||
#define FAME_OW_SIZE (PH_CLUTILS_FAME_WORD_SIZE/2)
|
||||
|
||||
#define FAME_WAIT(mask) do { dcw_dci(); } while(gphlibSfrUm_PKCC_STATUS.bVal & mask);
|
||||
#define FAME_WAIT(mask) while(gphlibSfrUm_PKCC_STATUS.bVal & mask) {}
|
||||
#define FAME_START(mask) dcw_dci(); gphlibSfrUm_PKCC_START.bVal = mask
|
||||
#define FAME_PTR(addr) (((uint16_t) addr) - SB_INFO_STRUCT_START)
|
||||
#define FAME_RPTR(addr) ((uint16_t*)(addr + SB_INFO_STRUCT_START))
|
||||
#define FAME_WALLOC(mem, size) &mem[size]; mem += size
|
||||
|
||||
#define FUP_ENTRY(p0, p1, x, y, z, r) (p0|(p1 << 8)), (x|(y << 8)), (z|(r << 8))
|
||||
#define FMC_ENTRY(a, b) (a|(b << 8))
|
||||
#define FUP_ENTRY(p0, p1, x, y, z, r) (uint16_t)(p0|((uint16_t)p1 << 8)), (uint16_t)(x|(uint16_t)(y << 8)), (uint16_t)(z|(uint16_t)(r << 8))
|
||||
#define FMC_ENTRY(a, b) (uint16_t)(a|(uint16_t)(b << 8))
|
||||
#define FAME_USER_MACRO_ADDR 0x80
|
||||
#define FAME_USER_MACRO_WLEN 27
|
||||
#define FAME_MC_MODINVO FAME_USER_MACRO_ADDR
|
||||
@@ -141,11 +144,25 @@ typedef struct LLVM_UNALIGNED {
|
||||
fp2_int_t z;
|
||||
} bls_point_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint8_t op_type;
|
||||
uint8_t op_code;
|
||||
uint8_t x;
|
||||
uint8_t y;
|
||||
uint8_t z;
|
||||
uint8_t r;
|
||||
} fup_entry_t;
|
||||
|
||||
/*===========================================================================*
|
||||
* Globals:
|
||||
*===========================================================================*/
|
||||
uint16_t* FAME_MEMORY_TYPE fameMem = (uint16_t* FAME_MEMORY_TYPE) SB_WORKSPACE_START;
|
||||
DM32_MEMORY_TYPE uint16_t* fup = NULL;
|
||||
phNativeLibParameterArea_t parameterArea __attribute__((used, section(".section.infostruct")));
|
||||
uint16_t fameMem[0x3C0] __attribute__ ((section(".section.workspace")));
|
||||
uint8_t stack[0x120] __attribute__((used, section(".section.stack")));
|
||||
|
||||
#ifndef FAME_SOFT_FUP
|
||||
volatile const uint16_t* fup;
|
||||
#endif
|
||||
|
||||
const uint16_t SECP256K1_R2_NDASH_N[] = {
|
||||
// R^2
|
||||
@@ -329,6 +346,9 @@ void fame_open() {
|
||||
|
||||
gphlibSfrUm_PKCC_CTRL.bVal &= (uint8_t)~PHLIB_SFRUMPKCC_CTRL_RESET_MASK;
|
||||
while(gphlibSfrUm_PKCC_CTRL.bVal & PHLIB_SFRUMPKCC_CTRL_RESET_MASK);
|
||||
|
||||
gphlibSfrUm_PKCC_UPCTRL.bVal = PHLIB_SFRUMPKCC_UPCTRL_CACHE_EN_MASK;
|
||||
gphlibSfrUm_PKCC_UPFIFO_CFG.bVal = (gphlibSfrUm_PKCC_VERSION0.wVal >> 8) & 0xf0;
|
||||
}
|
||||
|
||||
void fame_close() {
|
||||
@@ -339,6 +359,34 @@ void fame_close() {
|
||||
while((gphlibSfrUm_PKCC_CTRL.bVal & PHLIB_SFRUMPKCC_CTRL_STOP_MASK) != PHLIB_SFRUMPKCC_CTRL_STOP_MASK);
|
||||
}
|
||||
|
||||
void fame_run_fup(const uint16_t* prg, uint8_t prg_len, uint16_t* FAME_MEMORY_TYPE uptable) {
|
||||
#ifndef FAME_SOFT_FUP
|
||||
fup = prg;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
gphlibSfrUm_PKCC_UPLEN.bVal = prg_len;
|
||||
gphlibSfrUm_PKCC_UPTRT.wVal = FAME_PTR(uptable);
|
||||
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOU_MASK);
|
||||
gphlibSfrUm_PKCC_UPIRQ.bVal |= PHLIB_SFRUMPKCC_UPIRQ_LVL_MASK_VALUE_HIGH;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
#else
|
||||
fup_entry_t* ops = (fup_entry_t*) prg;
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
for (int i = 0; i < prg_len; i++) {
|
||||
gphlibSfrUm_PKCC_XPTR.wVal = uptable[ops[i].x];
|
||||
gphlibSfrUm_PKCC_YPTR.wVal = uptable[ops[i].y];
|
||||
gphlibSfrUm_PKCC_TOPP.wVal = uptable[ops[i].z];
|
||||
gphlibSfrUm_PKCC_RPTR.wVal = uptable[ops[i].r];
|
||||
gphlibSfrUm_PKCC_MODE.bVal = ops[i].op_code;
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOM1_MASK); // we always use macros in our FUP programs
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
uint8_t fame_cmp(uint16_t* FAME_MEMORY_TYPE a, uint16_t* FAME_MEMORY_TYPE b) {
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
@@ -346,7 +394,7 @@ uint8_t fame_cmp(uint16_t* FAME_MEMORY_TYPE a, uint16_t* FAME_MEMORY_TYPE b) {
|
||||
gphlibSfrUm_PKCC_TOPP.wVal = FAME_PTR(b);
|
||||
gphlibSfrUm_PKCC_MODE.bVal = FM_CMP;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOD1_MASK;
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOD1_MASK);
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
|
||||
return gphlibSfrUm_PKCC_STATUS.bVal & 0x3;
|
||||
@@ -360,28 +408,28 @@ void fame_rshift(uint16_t* FAME_MEMORY_TYPE a, uint16_t n) {
|
||||
gphlibSfrUm_PKCC_RPTR.wVal = FAME_PTR(a);
|
||||
gphlibSfrUm_PKCC_MODE.bVal = FM_SHR;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOD1_MASK;
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOD1_MASK);
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
}
|
||||
|
||||
void fame_modInvEven(uint16_t* ab, uint16_t* uv, uint16_t* FAME_MEMORY_TYPE n) {
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
n[-1] = 0x8000;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
gphlibSfrUm_PKCC_XPTR.wVal = FAME_PTR(n) - gphlibSfrUm_PKCC_OPLEN.wVal;
|
||||
gphlibSfrUm_PKCC_YPTR.wVal = FAME_PTR(n);
|
||||
gphlibSfrUm_PKCC_TOPP.wVal = FAME_PTR(ab);
|
||||
gphlibSfrUm_PKCC_RPTR.wVal = FAME_PTR(uv);
|
||||
gphlibSfrUm_PKCC_MODE.bVal = FAME_MC_MODINVE;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOM1_MASK;
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOM1_MASK);
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
}
|
||||
|
||||
void fame_modInvOdd(uint16_t* FAME_MEMORY_TYPE ab, uint16_t* FAME_MEMORY_TYPE ba, uint16_t* FAME_MEMORY_TYPE uv, uint16_t* FAME_MEMORY_TYPE vu, uint16_t* FAME_MEMORY_TYPE n) {
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
n[-1] = 0x8000;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
gphlibSfrUm_PKCC_XPTR.wVal = FAME_PTR(vu);
|
||||
gphlibSfrUm_PKCC_YPTR.wVal = FAME_PTR(uv);
|
||||
gphlibSfrUm_PKCC_TOPP.wVal = FAME_PTR(ab);
|
||||
@@ -389,7 +437,7 @@ void fame_modInvOdd(uint16_t* FAME_MEMORY_TYPE ab, uint16_t* FAME_MEMORY_TYPE ba
|
||||
gphlibSfrUm_PKCC_MCLEN.wVal = FAME_PTR(n);
|
||||
gphlibSfrUm_PKCC_MODE.bVal = FAME_MC_MODINVO;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOM1_MASK;
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOM1_MASK);
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
}
|
||||
|
||||
@@ -432,7 +480,7 @@ void fame_monpro(uint16_t* FAME_MEMORY_TYPE a, uint16_t* FAME_MEMORY_TYPE b, uin
|
||||
gphlibSfrUm_PKCC_MCLEN.wVal = ECDSA_OP_SIZE;
|
||||
gphlibSfrUm_PKCC_MODE.bVal = FMC_MONPRO;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOM1_MASK;
|
||||
FAME_START(PHLIB_SFRUMPKCC_START_GOM1_MASK);
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
}
|
||||
|
||||
@@ -447,19 +495,9 @@ static inline void fame_unblind(uint16_t* FAME_MEMORY_TYPE a, uint16_t* FAME_MEM
|
||||
|
||||
void fame_ecdsaSign(uint16_t* FAME_MEMORY_TYPE uptable) {
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
gphlibSfrUm_PKCC_MCLEN.wVal = ECDSA_OP_SIZE;
|
||||
gphlibSfrUm_PKCC_UPCTRL.bVal = PHLIB_SFRUMPKCC_UPCTRL_CACHE_EN_MASK;
|
||||
gphlibSfrUm_PKCC_UPLEN.bVal = ECDSA_SIGN_LEN;
|
||||
gphlibSfrUm_PKCC_UPTRT.wVal = FAME_PTR(uptable);
|
||||
|
||||
fup = ECDSA_SIGN;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOU_MASK;
|
||||
|
||||
gphlibSfrUm_PKCC_UPIRQ.bVal |= PHLIB_SFRUMPKCC_UPIRQ_LVL_MASK_VALUE_HIGH;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
fame_run_fup(ECDSA_SIGN, ECDSA_SIGN_LEN, uptable);
|
||||
}
|
||||
|
||||
void flipmpi(uint8_t* mpi, uint16_t size) {
|
||||
@@ -473,21 +511,13 @@ void flipmpi(uint8_t* mpi, uint16_t size) {
|
||||
|
||||
}
|
||||
|
||||
void fame_fp2_do(uint16_t* FAME_MEMORY_TYPE uptable, fp2_int_t* a, fp2_int_t* b, fp2_int_t* r, const uint16_t* op, uint16_t oplen) {
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
void fame_fp2_do(uint16_t* FAME_MEMORY_TYPE uptable, fp2_int_t* a, fp2_int_t* b, fp2_int_t* r, const uint16_t* op, uint8_t oplen) {
|
||||
uptable[0] = FAME_PTR(a->re);
|
||||
uptable[1] = FAME_PTR(a->im);
|
||||
uptable[2] = FAME_PTR(b->re);
|
||||
uptable[3] = FAME_PTR(b->im);
|
||||
|
||||
gphlibSfrUm_PKCC_UPLEN.bVal = oplen;
|
||||
fup = op;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOU_MASK;
|
||||
gphlibSfrUm_PKCC_UPIRQ.bVal |= PHLIB_SFRUMPKCC_UPIRQ_LVL_MASK_VALUE_HIGH;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
fame_run_fup(op, oplen, uptable);
|
||||
|
||||
uint16_t* rre = FAME_RPTR(uptable[6]);
|
||||
uint16_t* rim = FAME_RPTR(uptable[7]);
|
||||
@@ -525,19 +555,11 @@ void fame_fp2_mult_fp(uint16_t* FAME_MEMORY_TYPE uptable, fp2_int_t* a, const ui
|
||||
}
|
||||
|
||||
void fame_fp2_invert(uint16_t* FAME_MEMORY_TYPE uptable, fp2_int_t* a, fp2_int_t* r) {
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_GOANY_MASK);
|
||||
|
||||
uptable[0] = FAME_PTR(a->re);
|
||||
uptable[1] = FAME_PTR(a->im);
|
||||
uptable[2] = uptable[9];
|
||||
|
||||
gphlibSfrUm_PKCC_UPLEN.bVal = FP2_PRE_INV_LEN;
|
||||
fup = FP2_PRE_INV;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOU_MASK;
|
||||
gphlibSfrUm_PKCC_UPIRQ.bVal |= PHLIB_SFRUMPKCC_UPIRQ_LVL_MASK_VALUE_HIGH;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
fame_run_fup(FP2_PRE_INV, FP2_PRE_INV_LEN, uptable);
|
||||
|
||||
uint16_t* factor = FAME_RPTR(uptable[9]);
|
||||
uint16_t* b = FAME_RPTR(uptable[6]);
|
||||
@@ -560,13 +582,7 @@ void fame_fp2_invert(uint16_t* FAME_MEMORY_TYPE uptable, fp2_int_t* a, fp2_int_t
|
||||
}
|
||||
|
||||
gphlibSfrUm_PKCC_MCLEN.wVal = FP2_OP_SIZE;
|
||||
gphlibSfrUm_PKCC_UPLEN.bVal = FP2_POST_INV_LEN;
|
||||
fup = FP2_POST_INV;
|
||||
|
||||
gphlibSfrUm_PKCC_START.bVal = PHLIB_SFRUMPKCC_START_GOU_MASK;
|
||||
gphlibSfrUm_PKCC_UPIRQ.bVal |= PHLIB_SFRUMPKCC_UPIRQ_LVL_MASK_VALUE_HIGH;
|
||||
|
||||
FAME_WAIT(PHLIB_SFRUMPKCC_STATUS_ACTV_MASK);
|
||||
fame_run_fup(FP2_POST_INV, FP2_POST_INV_LEN, uptable);
|
||||
|
||||
for (uint8_t i = 0; i < FP2_OP_WSIZE; i++) {
|
||||
r->re[i] = b[i];
|
||||
@@ -673,17 +689,15 @@ uint16_t ecdsaSign() {
|
||||
res[off++] = recIdInv;
|
||||
|
||||
_ecdsa_finish:;
|
||||
phNativeLibParameterArea_t* params = (phNativeLibParameterArea_t*)SB_INFO_STRUCT_START;
|
||||
|
||||
params->siCopyBackAddress = (puint8_uni_t) res;
|
||||
params->siCopyBackSize = off;
|
||||
params->scCopyBackAtomic = 0xff;
|
||||
parameterArea.siCopyBackAddress = (puint8_uni_t) res;
|
||||
parameterArea.siCopyBackSize = off;
|
||||
parameterArea.scCopyBackAtomic = 0xff;
|
||||
|
||||
return off;
|
||||
}
|
||||
|
||||
uint8_t bls_point_is_zero(bls_point_t* FAME_MEMORY_TYPE p) {
|
||||
uint8_t res = 0;
|
||||
uint16_t res = 0;
|
||||
|
||||
for (uint16_t i = 0; i < FP2_OP_WSIZE; i++) {
|
||||
res |= p->z.re[i];
|
||||
@@ -892,8 +906,6 @@ uint16_t blsSign() {
|
||||
|
||||
gphlibSfrUm_PKCC_OPLEN.wVal = FP2_OP_SIZE;
|
||||
gphlibSfrUm_PKCC_MCLEN.wVal = FP2_OP_SIZE;
|
||||
gphlibSfrUm_PKCC_UPCTRL.bVal = PHLIB_SFRUMPKCC_UPCTRL_CACHE_EN_MASK;
|
||||
gphlibSfrUm_PKCC_UPTRT.wVal = FAME_PTR(uptable);
|
||||
|
||||
fame_load_macros();
|
||||
|
||||
@@ -908,39 +920,53 @@ uint16_t blsSign() {
|
||||
|
||||
bls_toggle_montgomeryxy(uptable, s);
|
||||
|
||||
phNativeLibParameterArea_t* params = (phNativeLibParameterArea_t*)SB_INFO_STRUCT_START;
|
||||
|
||||
flipmpi((uint8_t*) s->x.re, FP2_OP_SIZE);
|
||||
flipmpi((uint8_t*) s->x.im, FP2_OP_SIZE);
|
||||
flipmpi((uint8_t*) s->y.re, FP2_OP_SIZE);
|
||||
flipmpi((uint8_t*) s->y.im, FP2_OP_SIZE);
|
||||
|
||||
params->siCopyBackAddress = (puint8_uni_t) s;
|
||||
params->siCopyBackSize = (FP2_OP_SIZE * 4);
|
||||
params->scCopyBackAtomic = 0xff;
|
||||
parameterArea.siCopyBackAddress = (puint8_uni_t) s;
|
||||
parameterArea.siCopyBackSize = (FP2_OP_SIZE * 4);
|
||||
parameterArea.scCopyBackAtomic = 0xff;
|
||||
|
||||
return (FP2_OP_SIZE * 4);
|
||||
}
|
||||
|
||||
/* Main entry to test native library -> USR_0 */
|
||||
LLVM_ISR_WITH_ARGS uint16_t mainEntry(uint16_t funcId) {
|
||||
sil(0);
|
||||
#ifndef FAME_SOFT_FUP
|
||||
sil(6);
|
||||
#endif
|
||||
|
||||
OpenResources_SYS(NATIVELIB_OPEN_FAME_MASK|NATIVELIB_OPEN_RNG_MASK);
|
||||
//SetClock_SYS(NATIVELIB_CLOCK_ID_PKCC, NATIVELIB_CLOCK_MODE_ENABLE);
|
||||
|
||||
fame_open();
|
||||
|
||||
uint16_t res;
|
||||
|
||||
switch (funcId) {
|
||||
case SB_BLS: return blsSign();
|
||||
case SB_ECDSA: return ecdsaSign();
|
||||
case SB_BLS:
|
||||
res = blsSign();
|
||||
break;
|
||||
case SB_ECDSA:
|
||||
res = ecdsaSign();
|
||||
break;
|
||||
default:
|
||||
res = 0xffff;
|
||||
break;
|
||||
}
|
||||
|
||||
fame_close();
|
||||
//SetClock_SYS(NATIVELIB_CLOCK_ID_PKCC, NATIVELIB_CLOCK_MODE_DISABLE);
|
||||
CloseResources_SYS(NATIVELIB_OPEN_FAME_MASK|NATIVELIB_OPEN_RNG_MASK);
|
||||
|
||||
return 0x6d00;
|
||||
return res;
|
||||
}
|
||||
|
||||
/* FAME UPFIFO Empty ISR */
|
||||
void phIntHandler_FAME3_UPFIFO_Empty_Isr() LLVM_ISR {
|
||||
#ifndef FAME_SOFT_FUP
|
||||
while(!(gphlibSfrUm_PKCC_UPIRQ.bVal & PHLIB_SFRUMPKCC_UPIRQ_STOP_READING_MASK)) {
|
||||
gphlibSfrUm_PKCC_UPFIFO.wVal = *(fup++);
|
||||
gphlibSfrUm_PKCC_UPFIFO.wVal = *(fup++);
|
||||
@@ -956,6 +982,7 @@ void phIntHandler_FAME3_UPFIFO_Empty_Isr() LLVM_ISR {
|
||||
}
|
||||
|
||||
gphlibSfrUm_PKCC_UPIRQ.bVal = (gphlibSfrUm_PKCC_UPIRQ.bVal & ~mask) | PHLIB_SFRUMPKCC_UPIRQ_CLR_MASK;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Timer ISR */
|
||||
@@ -971,4 +998,3 @@ LLVM_ISR_WITH_ARGS void phappSysCall_Reset_POR() {
|
||||
LLVM_ISR_WITH_ARGS void phSecureBox_Exception_UsrCall(uint16_t liExceptionType, uint16_t liExceptionReason) {
|
||||
Exception_SYS(liExceptionType, liExceptionReason);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,11 +9,10 @@
|
||||
secureBoxWorkSpaceSize = 0x780;
|
||||
|
||||
/* SecureBox Stack size (located in FRAM) */
|
||||
secureBoxStackSize = 0x100;
|
||||
secureBoxStackSize = 0x120;
|
||||
|
||||
/* SecureBox Transient State size (located in T-Heap)*/
|
||||
secureBoxTransienStateSize = 0x100;
|
||||
secureBoxTransienStateSize = 0x20;
|
||||
|
||||
/* SecureBox Persistent State size (located in P-Heap)*/
|
||||
secureBoxPersistentStateSize = 0x00;
|
||||
|
||||
secureBoxPersistentStateSize = 0x00;
|
||||
+10
-14
@@ -106,9 +106,8 @@ SECTIONS
|
||||
.nxp.jcop.securebox.bss.SECUREBOX_PRODUCT_NAME (NOLOAD) :
|
||||
{
|
||||
FILL(0);
|
||||
|
||||
*(SORT_BY_USAGE(.bss*)
|
||||
SORT_BY_USAGE(COMMON))
|
||||
KEEP (*(SORT_BY_NAME(.bss*)
|
||||
SORT_BY_USAGE(COMMON)))
|
||||
. = .;
|
||||
|
||||
. = ALIGN(__MMU_RAM_GRANULARITY_BYTES);
|
||||
@@ -123,17 +122,14 @@ SECTIONS
|
||||
|
||||
|
||||
.nxp.jcop.securebox.workspace.SECUREBOX_PRODUCT_NAME (ORIGIN(DATA) + (0x4000)) :
|
||||
{
|
||||
FILL(0);
|
||||
|
||||
KEEP (*(.section.workspace))
|
||||
. = .;
|
||||
|
||||
. = ALIGN(__MMU_RAM_GRANULARITY_BYTES);
|
||||
|
||||
} > DATA
|
||||
|
||||
|
||||
{
|
||||
FILL(0);
|
||||
KEEP (*(.section.infostruct))
|
||||
ASSERT(. == 0x30, "InfoStruct allocation does not have the correct length");
|
||||
KEEP (*(.section.workspace))
|
||||
. = .;
|
||||
. = ALIGN(__MMU_RAM_GRANULARITY_BYTES);
|
||||
} > DATA
|
||||
|
||||
.nxp.jcop.securebox.stack.SECUREBOX_PRODUCT_NAME :
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user