Skip to content

Commit 5e6722a

Browse files
author
Wayne Ren
committed
arc: optmize the ARC_FEATURE_XXX definitions
make code density, fpu, dsp controlable by application Signed-off-by: Wayne Ren <[email protected]>
1 parent 73a8625 commit 5e6722a

File tree

7 files changed

+49
-42
lines changed

7 files changed

+49
-42
lines changed

arc/arc_exception.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,10 @@ void exc_int_init(void)
414414
ictrl.bits.save_blink = 1;
415415
ictrl.bits.save_lp_regs = 1; /* LP_COUNT, LP_START, LP_END */
416416
ictrl.bits.save_u_to_u = 0; /* user ctxt saved on kernel stack */
417+
418+
#if ARC_FEATURE_CODE_DENSITY
417419
ictrl.bits.save_idx_regs = 1; /* JLI, LDI, EI */
420+
#endif
418421

419422
status = arc_lock_save();
420423
for (i = NUM_EXC_CPU; i < NUM_EXC_ALL; i++) {

inc/arc/arc_asm_common.h

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -89,25 +89,25 @@
8989
#endif
9090

9191
.macro SAVE_R58_R59
92-
#if defined(ARC_FEATURE_FPU) || defined(ARC_FEATURE_DSP) || ARC_FEATURE_MPU_OPTION_NUM > 6
92+
#if ARC_FEATURE_FPU || ARC_FEATURE_DSP || ARC_FEATURE_MPU_OPTION_NUM > 6
9393
PUSH r58
9494
PUSH r59
9595
#endif
9696
.endm
9797

9898
.macro RESTORE_R58_R59
99-
#if defined(ARC_FEATURE_FPU) || defined(ARC_FEATURE_DSP) || ARC_FEATURE_MPU_OPTION_NUM > 6
99+
#if ARC_FEATURE_FPU || ARC_FEATURE_DSP || ARC_FEATURE_MPU_OPTION_NUM > 6
100100
POP r59
101101
POP r58
102102
#endif
103103
.endm
104104

105105
.macro SAVE_FPU_REGS
106-
#if defined(ARC_FEATURE_FPU)
106+
#if ARC_FEATURE_FPU
107107
PUSHAX AUX_FPU_CTRL
108108
PUSHAX AUX_FPU_STATUS
109109

110-
#if defined(ARC_FEATURE_FPU_DA)
110+
#if ARC_FEATURE_FPU_DA
111111
PUSHAX AUX_FPU_DPFP1L
112112
PUSHAX AUX_FPU_DPFP1H
113113
PUSHAX AUX_FPU_DPFP2L
@@ -118,9 +118,9 @@
118118
.endm
119119

120120
.macro RESTORE_FPU_REGS
121-
#if defined(ARC_FEATURE_FPU)
121+
#if ARC_FEATURE_FPU
122122

123-
#if defined(ARC_FEATURE_FPU_DA)
123+
#if ARC_FEATURE_FPU_DA
124124
POPAX AUX_FPU_DPFP2H
125125
POPAX AUX_FPU_DPFP2L
126126
POPAX AUX_FPU_DPFP1H
@@ -134,14 +134,14 @@
134134

135135

136136
.macro SAVE_DSP_REGS
137-
#if defined(ARC_FEATURE_DSP)
137+
#if ARC_FEATURE_DSP
138138
PUSHAX AUX_DSP_CTRL
139139
PUSHAX AUX_ACC0_LO
140140
PUSHAX AUX_ACC0_GLO
141141
PUSHAX AUX_ACC0_HI
142142
PUSHAX AUX_ACC0_GHI
143143

144-
#if defined(ARC_FEATURE_DSP_COMPLEX)
144+
#if ARC_FEATURE_DSP_COMPLEX
145145
PUSHAX AUX_DSP_BFLY0
146146
PUSHAX AUX_DSP_FFT_CTRL
147147
#endif
@@ -150,9 +150,9 @@
150150
.endm
151151

152152
.macro RESTORE_DSP_REGS
153-
#if defined(ARC_FEATURE_DSP)
153+
#if ARC_FEATURE_DSP
154154

155-
#if defined(ARC_FEATURE_DSP_COMPLEX)
155+
#if ARC_FEATURE_DSP_COMPLEX
156156
POPAX AUX_DSP_FFT_CTRL
157157
POPAX AUX_DSP_BFLY0
158158
#endif
@@ -255,9 +255,9 @@
255255
mov r13, 0
256256
#if ARC_FEATURE_FPU_DSP_CONTEXT
257257

258-
#if defined(ARC_FEATURE_FPU)
258+
#if ARC_FEATURE_FPU
259259

260-
#if defined(ARC_FEATURE_FPU_DA)
260+
#if ARC_FEATURE_FPU_DA
261261
sr 0, [AUX_FPU_DPFP2H]
262262
sr 0, [AUX_FPU_DPFP2L]
263263
sr 0, [AUX_FPU_DPFP1H]
@@ -267,9 +267,9 @@
267267
sr 0, [AUX_FPU_CTRL]
268268
#endif /* ARC_FEATURE_FPU */
269269

270-
#if defined(ARC_FEATURE_DSP)
270+
#if ARC_FEATURE_DSP
271271

272-
#if defined(ARC_FEATURE_DSP_COMPLEX)
272+
#if ARC_FEATURE_DSP_COMPLEX
273273
sr 0, [AUX_DSP_FFT_CTRL]
274274
sr 0, [AUX_DSP_BFLY0]
275275
#endif
@@ -280,7 +280,7 @@
280280
sr 0, [AUX_DSP_CTRL]
281281
#endif /* ARC_FEATURE_DSP */
282282

283-
#if defined(ARC_FEATURE_FPU) || defined(ARC_FEATURE_DSP) || ARC_FEATURE_MPU_OPTION_NUM > 6
283+
#if ARC_FEATURE_FPU || ARC_FEATURE_DSP || ARC_FEATURE_MPU_OPTION_NUM > 6
284284
mov r59, 0
285285
mov r58, 0
286286
#endif
@@ -432,15 +432,15 @@
432432

433433
#endif /* #ifndef ARC_FEATURE_RGF_BANKED_REGS */
434434

435-
#ifdef ARC_FEATURE_CODE_DENSITY
435+
#if ARC_FEATURE_CODE_DENSITY
436436
SAVE_CODE_DENSITY
437437
#endif
438438
SAVE_LP_REGS
439439
.endm
440440

441441
.macro RESTORE_FIQ_EXC_REGS
442442
RESTORE_LP_REGS
443-
#ifdef ARC_FEATURE_CODE_DENSITY
443+
#if ARC_FEATURE_CODE_DENSITY
444444
RESTORE_CODE_DENSITY
445445
#endif
446446

@@ -538,7 +538,7 @@
538538
PUSH r1
539539
PUSH r0
540540

541-
#ifdef ARC_FEATURE_CODE_DENSITY
541+
#if ARC_FEATURE_CODE_DENSITY
542542
SAVE_CODE_DENSITY
543543
#endif
544544
SAVE_LP_REGS
@@ -564,7 +564,7 @@
564564

565565
RESTORE_LP_REGS
566566

567-
#ifdef ARC_FEATURE_CODE_DENSITY
567+
#if ARC_FEATURE_CODE_DENSITY
568568
RESTORE_CODE_DENSITY
569569
#endif
570570
POP r0
@@ -594,15 +594,15 @@
594594
#else /* normal version */
595595
/* exception prologue, create the same frame of interrupt manually */
596596
.macro EXCEPTION_PROLOGUE
597-
#ifdef ARC_FEATURE_CODE_DENSITY
597+
#if ARC_FEATURE_CODE_DENSITY
598598
st.as r10, [sp, -11] /* save r10 first, free up a register*/
599599
#else
600600
st.as r10, [sp, -8]
601601
#endif
602602
PUSHAX AUX_ERSTATUS
603603
PUSHAX AUX_ERRET
604604

605-
#ifdef ARC_FEATURE_CODE_DENSITY
605+
#if ARC_FEATURE_CODE_DENSITY
606606
SAVE_CODE_DENSITY
607607
#endif
608608
SAVE_LP_REGS
@@ -662,14 +662,14 @@
662662

663663
RESTORE_LP_REGS
664664

665-
#ifdef ARC_FEATURE_CODE_DENSITY
665+
#if ARC_FEATURE_CODE_DENSITY
666666
RESTORE_CODE_DENSITY
667667
#endif
668668

669669
POPAX AUX_ERRET
670670
POPAX AUX_ERSTATUS
671671

672-
#ifdef ARC_FEATURE_CODE_DENSITY
672+
#if ARC_FEATURE_CODE_DENSITY
673673
ld.as r10, [sp, -11] /* restore r10 */
674674
#else
675675
ld.as r10, [sp, -8]

inc/arc/arc_exception.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ typedef struct int_exc_frame {
7777

7878
uint32_t lp_end, lp_start, lp_count;
7979

80-
#ifdef ARC_FEATURE_CODE_DENSITY
80+
#if ARC_FEATURE_CODE_DENSITY
8181
uint32_t ei, ldi, jli;
8282
#endif
8383

@@ -114,7 +114,7 @@ typedef struct int_exc_frame {
114114

115115
uint32_t lp_end, lp_start, lp_count;
116116

117-
#ifdef ARC_FEATURE_CODE_DENSITY
117+
#if ARC_FEATURE_CODE_DENSITY
118118
uint32_t ei, ldi, jli;
119119
#endif
120120

@@ -125,7 +125,7 @@ typedef struct int_exc_frame {
125125

126126
typedef struct dsp_ext_frame {
127127
/* todo xy memory support */
128-
#if defined(ARC_FEATURE_DSP_COMPLEX)
128+
#if ARC_FEATURE_DSP_COMPLEX
129129
uint32_t dsp_fft_ctrl;
130130
uint32_t dsp_bfly0;
131131
#endif
@@ -138,7 +138,7 @@ typedef struct dsp_ext_frame {
138138
} EMBARC_PACKED DSP_EXT_FRAME;
139139

140140
typedef struct fpu_ext_frame {
141-
#if defined(ARC_FEATURE_FPU_DA)
141+
#if ARC_FEATURE_FPU_DA
142142
uint32_t dpfp2h;
143143
uint32_t dpfp2l;
144144
uint32_t dpfp1h;
@@ -154,15 +154,15 @@ typedef struct callee_frame {
154154

155155
#if ARC_FEATURE_FPU_DSP_CONTEXT
156156

157-
#if defined(ARC_FEATURE_DSP)
157+
#if ARC_FEATURE_DSP
158158
DSP_EXT_FRAME dsp_regs;
159159
#endif
160160

161-
#if defined(ARC_FEATURE_FPU)
161+
#if ARC_FEATURE_FPU
162162
FPU_EXT_FRAME fpu_ext_regs;
163163
#endif
164164

165-
#if defined(ARC_FEATURE_DSP) || defined(ARC_FEATURE_FPU) || ARC_FEATURE_MPU_OPTION_NUM > 6
165+
#if ARC_FEATURE_DSP || ARC_FEATURE_FPU || ARC_FEATURE_MPU_OPTION_NUM > 6
166166
/* accl and acch, common for mpy_option >6 and fpu_fma option */
167167
uint32_t r59;
168168
uint32_t r58;

inc/arc/arc_feature_config.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,9 @@
123123
/** Code density option, if enabled, ARC_FEATURE_CODE_DENSITY will be defined */
124124
#if !defined(ARC_FEATURE_CODE_DENSITY)
125125
#if defined(core_config_code_density) && core_config_code_density == 1
126-
#define ARC_FEATURE_CODE_DENSITY
126+
#define ARC_FEATURE_CODE_DENSITY 1
127+
#else
128+
#define ARC_FEATURE_CODE_DENSITY 0
127129
#endif
128130
#endif
129131

library/secureshield/core/src/arc_hal/secureshield_int.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -610,7 +610,9 @@ void secureshield_int_init(void)
610610
ictrl.bits.save_blink = 1;
611611
ictrl.bits.save_lp_regs = 1; /* LP_COUNT, LP_START, LP_END */
612612
ictrl.bits.save_u_to_u = 0; /* user context saved on kernel stack */
613+
#if ARC_FEATURE_CODE_DENSITY
613614
ictrl.bits.save_idx_regs = 1; /* JLI, LDI, EI */
615+
#endif
614616

615617
#if SECURESHIELD_VERSION == 1
616618
_arc_aux_write(AUX_INT_VECT_BASE, (uint32_t)secureshield_exc_entry_table);

os/freertos/portable/Synopsys/ARC/arc_support.s

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ ret_firq_2:
448448
*/
449449
#if ARC_FEATURE_RGF_BANKED_REGS >= 16
450450
RESTORE_LP_REGS
451-
#ifdef ARC_FEATURE_CODE_DENSITY
451+
#if ARC_FEATURE_CODE_DENSITY
452452
RESTORE_CODE_DENSITY
453453
#endif
454454
#endif
@@ -492,7 +492,7 @@ ret_firq_2:
492492
PUSH r30 /* general purpose */
493493
PUSH blink
494494

495-
#ifdef ARC_FEATURE_CODE_DENSITY
495+
#if ARC_FEATURE_CODE_DENSITY
496496
SAVE_CODE_DENSITY
497497
#endif
498498
SAVE_LP_REGS
@@ -536,7 +536,7 @@ ret_firq_r:
536536
RESTORE_FIQ_EXC_REGS
537537
#elif ARC_FEATURE_RGF_BANKED_REGS >= 16
538538
RESTORE_LP_REGS
539-
#ifdef ARC_FEATURE_CODE_DENSITY
539+
#if ARC_FEATURE_CODE_DENSITY
540540
RESTORE_CODE_DENSITY
541541
#endif
542542
POP blink

os/freertos/portable/Synopsys/ARC_EM_SECURESHIELD/port.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,9 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
168168
pxTopOfStack--;
169169
*pxTopOfStack = ( StackType_t ) 0x01010101; /* R1 */
170170
pxTopOfStack--;
171-
*pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */
171+
*pxTopOfStack = ( StackType_t ) pvParameters; /* R0 */
172172

173-
#ifdef ARC_FEATURE_CODE_DENSITY
173+
#if ARC_FEATURE_CODE_DENSITY
174174
/* code density related regs */
175175
pxTopOfStack--;
176176
*pxTopOfStack = ( StackType_t ) 0x00000000; /* JLI_BASE*/
@@ -192,7 +192,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
192192
pxTopOfStack--;
193193
*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
194194
pxTopOfStack--;
195-
*pxTopOfStack = ( StackType_t ) &_f_sdata; /* gp */
195+
*pxTopOfStack = ( StackType_t ) &_f_sdata; /* gp */
196196
pxTopOfStack--;
197197
*pxTopOfStack = ( StackType_t ) 0x00000000; /* fp */
198198
pxTopOfStack--;
@@ -233,20 +233,20 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
233233

234234
#if ARC_FEATURE_FPU_DSP_CONTEXT
235235

236-
#if defined(ARC_FEATURE_DSP) || defined(ARC_FEATURE_FPU) || ARC_FEATURE_MPU_OPTION_NUM > 6
236+
#if ARC_FEATURE_DSP || ARC_FEATURE_FPU || ARC_FEATURE_MPU_OPTION_NUM > 6
237237
pxTopOfStack--;
238238
*pxTopOfStack = ( StackType_t ) 0x58585858; /* R58 */
239239
pxTopOfStack--;
240240
*pxTopOfStack = ( StackType_t ) 0x59595959; /* R58 */
241241
#endif
242242

243-
#if defined(ARC_FEATURE_FPU)
243+
#if ARC_FEATURE_FPU
244244
pxTopOfStack--;
245245
*pxTopOfStack = ( StackType_t ) _arc_aux_read(AUX_FPU_CTRL); /* AUX_FPU_CTRL */
246246
pxTopOfStack--;
247247
*pxTopOfStack = ( StackType_t ) _arc_aux_read(AUX_FPU_STATUS); /* AUX_FPU_STATUS */
248248

249-
#if defined(ARC_FEATURE_FPU_DA)
249+
#if ARC_FEATURE_FPU_DA
250250
pxTopOfStack--;
251251
*pxTopOfStack = ( StackType_t ) _arc_aux_read(AUX_FPU_DPFP1L); /* AUX_FPU_DPFP1L */
252252
pxTopOfStack--;
@@ -259,7 +259,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
259259

260260
#endif /* ARC_FEATURE_FPU */
261261

262-
#if defined(ARC_FEATURE_DSP)
262+
#if ARC_FEATURE_DSP
263263
pxTopOfStack--;
264264
*pxTopOfStack = ( StackType_t ) _arc_aux_read(AUX_DSP_CTRL); /* AUX_DSP_CTRL */
265265
pxTopOfStack--;
@@ -281,7 +281,7 @@ StackType_t *pxPortInitialiseStack( StackType_t *pxTopOfStack, TaskFunction_t px
281281
#endif /* ARC_FEATURE_DSP */
282282

283283
#endif /* ARC_FEATURE_FPU_DSP_CONTEXT */
284-
284+
285285
pxTopOfStack--;
286286
*pxTopOfStack = (StackType_t) portNO_CRITICAL_NESTING;
287287

0 commit comments

Comments
 (0)