Skip to content

Commit 371d652

Browse files
AlessandroAstevew817
authored andcommitted
EFM32: Use SECURE_ACCESS to access the ROM table
To allow enabling of uVisor on EFM32, the ROM table must be accessed through the CMSIS-provided SECURE_ACCESS macro.
1 parent 0b6ed71 commit 371d652

File tree

1 file changed

+11
-5
lines changed
  • targets/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src

1 file changed

+11
-5
lines changed

targets/TARGET_Silicon_Labs/TARGET_EFM32/emlib/src/em_system.c

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "em_system.h"
3434
#include "em_assert.h"
3535
#include <stddef.h>
36+
#include "core_cmSecureAccess.h"
3637

3738
/***************************************************************************//**
3839
* @addtogroup emlib
@@ -61,19 +62,24 @@ void SYSTEM_ChipRevisionGet(SYSTEM_ChipRevision_TypeDef *rev)
6162

6263
EFM_ASSERT(rev);
6364

65+
uint32_t pid0 = SECURE_READ(&(ROMTABLE->PID0));
66+
uint32_t pid1 = SECURE_READ(&(ROMTABLE->PID1));
67+
uint32_t pid2 = SECURE_READ(&(ROMTABLE->PID2));
68+
uint32_t pid3 = SECURE_READ(&(ROMTABLE->PID3));
69+
6470
/* CHIP FAMILY bit [5:2] */
65-
tmp = (((ROMTABLE->PID1 & _ROMTABLE_PID1_FAMILYMSB_MASK) >> _ROMTABLE_PID1_FAMILYMSB_SHIFT) << 2);
71+
tmp = (((pid1 & _ROMTABLE_PID1_FAMILYMSB_MASK) >> _ROMTABLE_PID1_FAMILYMSB_SHIFT) << 2);
6672
/* CHIP FAMILY bit [1:0] */
67-
tmp |= ((ROMTABLE->PID0 & _ROMTABLE_PID0_FAMILYLSB_MASK) >> _ROMTABLE_PID0_FAMILYLSB_SHIFT);
73+
tmp |= ((pid0 & _ROMTABLE_PID0_FAMILYLSB_MASK) >> _ROMTABLE_PID0_FAMILYLSB_SHIFT);
6874
rev->family = tmp;
6975

7076
/* CHIP MAJOR bit [3:0] */
71-
rev->major = (ROMTABLE->PID0 & _ROMTABLE_PID0_REVMAJOR_MASK) >> _ROMTABLE_PID0_REVMAJOR_SHIFT;
77+
rev->major = (pid0 & _ROMTABLE_PID0_REVMAJOR_MASK) >> _ROMTABLE_PID0_REVMAJOR_SHIFT;
7278

7379
/* CHIP MINOR bit [7:4] */
74-
tmp = (((ROMTABLE->PID2 & _ROMTABLE_PID2_REVMINORMSB_MASK) >> _ROMTABLE_PID2_REVMINORMSB_SHIFT) << 4);
80+
tmp = (((pid2 & _ROMTABLE_PID2_REVMINORMSB_MASK) >> _ROMTABLE_PID2_REVMINORMSB_SHIFT) << 4);
7581
/* CHIP MINOR bit [3:0] */
76-
tmp |= ((ROMTABLE->PID3 & _ROMTABLE_PID3_REVMINORLSB_MASK) >> _ROMTABLE_PID3_REVMINORLSB_SHIFT);
82+
tmp |= ((pid3 & _ROMTABLE_PID3_REVMINORLSB_MASK) >> _ROMTABLE_PID3_REVMINORLSB_SHIFT);
7783
rev->minor = tmp;
7884
}
7985

0 commit comments

Comments
 (0)