Skip to content

Commit

Permalink
syslog: reslove crash because vmov.i32 instruction is not ready when …
Browse files Browse the repository at this point in the history
…system boot

So avoid to use vmov.i32 instruction before FPU is ready.

Before modification:
3c03b35c <nx_vsyslog>:
3c03b35c:	f2c00010 	vmov.i32	d16, #0	; 0x00000000
3c03b360:	f2c02050 	vmov.i32	q9, #0	; 0x00000000
3c03b364:	e92d40f0 	push	{r4, r5, r6, r7, lr}
3c03b368:	e24dd08c 	sub	sp, sp, apache#140	; 0x8c
3c03b36c:	e28d301c 	add	r3, sp, apache#28
3c03b370:	e2505000 	subs	r5, r0, #0
3c03b374:	edcd0b0f 	vstr	d16, [sp, apache#60]	; 0x3c
3c03b378:	edcd0b01 	vstr	d16, [sp, apache#4]

After modification:
3c03b35c <nx_vsyslog>:
3c03b35c:       e92d40f0        push    {r4, r5, r6, r7, lr}
3c03b360:       e2505000        subs    r5, r0, #0
3c03b364:       e24dd08c        sub     sp, sp, apache#140    ; 0x8c
3c03b368:       e1a06001        mov     r6, r1
3c03b36c:       e1a07002        mov     r7, r2
3c03b370:       e28d000c        add     r0, sp, apache#12
3c03b374:       1a00003a        bne     3c03b464 <nx_vsyslog+0x108>

Change-Id: I643c19f5416c94a529764fdaa81f3088fcf95355
Signed-off-by: Jiuzhu Dong <[email protected]>
  • Loading branch information
Donny9 committed Jul 26, 2021
1 parent b92aeb8 commit 0f5661d
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions drivers/syslog/vsyslog.c
Original file line number Diff line number Diff line change
Expand Up @@ -72,15 +72,9 @@ int nx_vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap)
struct tcb_s *tcb;
#endif
#ifdef CONFIG_SYSLOG_TIMESTAMP
struct timespec ts =
{
};

struct timespec ts;
#if defined(CONFIG_SYSLOG_TIMESTAMP_FORMATTED)
struct tm tm =
{
};

struct tm tm;
char date_buf[CONFIG_SYSLOG_TIMESTAMP_BUFFER];
#endif
#endif
Expand All @@ -92,6 +86,13 @@ int nx_vsyslog(int priority, FAR const IPTR char *fmt, FAR va_list *ap)
syslogstream_create(&stream);

#ifdef CONFIG_SYSLOG_TIMESTAMP
ts.tv_sec = 0;
ts.tv_nsec = 0;

#if defined(CONFIG_SYSLOG_TIMESTAMP_FORMATTED)
memset(&tm, 0, sizeof(tm));
#endif

/* Get the current time. Since debug output may be generated very early
* in the start-up sequence, hardware timer support may not yet be
* available.
Expand Down

0 comments on commit 0f5661d

Please sign in to comment.