Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 56651
b: refs/heads/master
c: ef9256d
h: refs/heads/master
i:
  56649: fd90c12
  56647: fc67315
v: v3
  • Loading branch information
Mike Frysinger authored and Linus Torvalds committed May 21, 2007
1 parent f83fe2e commit dadac28
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 161 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c0fc525dcc407a516132fc11af82375319ebdadb
refs/heads/master: ef9256d2831df0896566c3823cd2bdf0e55df984
68 changes: 16 additions & 52 deletions trunk/arch/blackfin/mach-bf533/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -481,66 +481,30 @@ ENTRY(_bfin_reset)
[p0] = r0;
SSYNC;

/* Disable the WDOG TIMER */
p0.h = hi(WDOG_CTL);
p0.l = lo(WDOG_CTL);
r0.l = 0xAD6;
w[p0] = r0.l;
SSYNC;

/* Clear the sticky bit incase it is already set */
p0.h = hi(WDOG_CTL);
p0.l = lo(WDOG_CTL);
r0.l = 0x8AD6;
w[p0] = r0.l;
/* make sure SYSCR is set to use BMODE */
P0.h = hi(SYSCR);
P0.l = lo(SYSCR);
R0.l = 0x0;
W[P0] = R0.l;
SSYNC;

/* Program the count value */
R0.l = 0x100;
R0.h = 0x0;
P0.h = hi(WDOG_CNT);
P0.l = lo(WDOG_CNT);
[P0] = R0;
/* issue a system soft reset */
P1.h = hi(SWRST);
P1.l = lo(SWRST);
R1.l = 0x0007;
W[P1] = R1;
SSYNC;

/* Program WDOG_STAT if necessary */
P0.h = hi(WDOG_CTL);
P0.l = lo(WDOG_CTL);
R0 = W[P0](Z);
CC = BITTST(R0,1);
if !CC JUMP .LWRITESTAT;
CC = BITTST(R0,2);
if !CC JUMP .LWRITESTAT;
JUMP .LSKIP_WRITE;

.LWRITESTAT:
/* When watch dog timer is enabled, a write to STAT will load the contents of CNT to STAT */
R0 = 0x0000(z);
P0.h = hi(WDOG_STAT);
P0.l = lo(WDOG_STAT)
[P0] = R0;
SSYNC;

.LSKIP_WRITE:
/* Enable the reset event */
P0.h = hi(WDOG_CTL);
P0.l = lo(WDOG_CTL);
R0 = W[P0](Z);
BITCLR(R0,1);
BITCLR(R0,2);
W[P0] = R0.L;
SSYNC;
NOP;

/* Enable the wdog counter */
R0 = W[P0](Z);
BITCLR(R0,4);
W[P0] = R0.L;
/* clear system soft reset */
R0.l = 0x0000;
W[P0] = R0;
SSYNC;

IDLE;
/* issue core reset */
raise 1;

RTS;
ENDPROC(_bfin_reset)

#if CONFIG_DEBUG_KERNEL_START
debug_kernel_start_trap:
Expand Down
70 changes: 16 additions & 54 deletions trunk/arch/blackfin/mach-bf537/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -517,68 +517,30 @@ _delay_lab1_end:
[p0] = r0;
SSYNC;

/* Disable the WDOG TIMER */
p0.h = hi(WDOG_CTL);
p0.l = lo(WDOG_CTL);
r0.l = 0xAD6;
w[p0] = r0.l;
/* make sure SYSCR is set to use BMODE */
P0.h = hi(SYSCR);
P0.l = lo(SYSCR);
R0.l = 0x0;
W[P0] = R0.l;
SSYNC;

/* Clear the sticky bit incase it is already set */
p0.h = hi(WDOG_CTL);
p0.l = lo(WDOG_CTL);
r0.l = 0x8AD6;
w[p0] = r0.l;
/* issue a system soft reset */
P1.h = hi(SWRST);
P1.l = lo(SWRST);
R1.l = 0x0007;
W[P1] = R1;
SSYNC;

/* Program the count value */
R0.l = 0x100;
R0.h = 0x0;
P0.h = hi(WDOG_CNT);
P0.l = lo(WDOG_CNT);
[P0] = R0;
SSYNC;

/* Program WDOG_STAT if necessary */
P0.h = hi(WDOG_CTL);
P0.l = lo(WDOG_CTL);
R0 = W[P0](Z);
CC = BITTST(R0,1);
if !CC JUMP .LWRITESTAT;
CC = BITTST(R0,2);
if !CC JUMP .LWRITESTAT;
JUMP .LSKIP_WRITE;

.LWRITESTAT:
/* When watch dog timer is enabled,
* a write to STAT will load the contents of CNT to STAT
*/
R0 = 0x0000(z);
P0.h = hi(WDOG_STAT);
P0.l = lo(WDOG_STAT)
[P0] = R0;
SSYNC;

.LSKIP_WRITE:
/* Enable the reset event */
P0.h = hi(WDOG_CTL);
P0.l = lo(WDOG_CTL);
R0 = W[P0](Z);
BITCLR(R0,1);
BITCLR(R0,2);
W[P0] = R0.L;
SSYNC;
NOP;

/* Enable the wdog counter */
R0 = W[P0](Z);
BITCLR(R0,4);
W[P0] = R0.L;
/* clear system soft reset */
R0.l = 0x0000;
W[P0] = R0;
SSYNC;

IDLE;
/* issue core reset */
raise 1;

RTS;
ENDPROC(_bfin_reset)

.data

Expand Down
70 changes: 16 additions & 54 deletions trunk/arch/blackfin/mach-bf561/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -427,68 +427,30 @@ ENTRY(_bfin_reset)
[p0] = r0;
SSYNC;

/* Disable the WDOG TIMER */
p0.h = hi(WDOGA_CTL);
p0.l = lo(WDOGA_CTL);
r0.l = 0xAD6;
w[p0] = r0.l;
/* make sure SYSCR is set to use BMODE */
P0.h = hi(SICA_SYSCR);
P0.l = lo(SICA_SYSCR);
R0.l = 0x0;
W[P0] = R0.l;
SSYNC;

/* Clear the sticky bit incase it is already set */
p0.h = hi(WDOGA_CTL);
p0.l = lo(WDOGA_CTL);
r0.l = 0x8AD6;
w[p0] = r0.l;
SSYNC;

/* Program the count value */
R0.l = 0x100;
R0.h = 0x0;
P0.h = hi(WDOGA_CNT);
P0.l = lo(WDOGA_CNT);
[P0] = R0;
/* issue a system soft reset */
P1.h = hi(SICA_SWRST);
P1.l = lo(SICA_SWRST);
R1.l = 0x0007;
W[P1] = R1;
SSYNC;

/* Program WDOG_STAT if necessary */
P0.h = hi(WDOGA_CTL);
P0.l = lo(WDOGA_CTL);
R0 = W[P0](Z);
CC = BITTST(R0,1);
if !CC JUMP .LWRITESTAT;
CC = BITTST(R0,2);
if !CC JUMP .LWRITESTAT;
JUMP .LSKIP_WRITE;

.LWRITESTAT:
/* When watch dog timer is enabled,
* a write to STAT will load the contents of CNT to STAT
*/
R0 = 0x0000(z);
P0.h = hi(WDOGA_STAT);
P0.l = lo(WDOGA_STAT)
[P0] = R0;
SSYNC;

.LSKIP_WRITE:
/* Enable the reset event */
P0.h = hi(WDOGA_CTL);
P0.l = lo(WDOGA_CTL);
R0 = W[P0](Z);
BITCLR(R0,1);
BITCLR(R0,2);
W[P0] = R0.L;
SSYNC;
NOP;

/* Enable the wdog counter */
R0 = W[P0](Z);
BITCLR(R0,4);
W[P0] = R0.L;
/* clear system soft reset */
R0.l = 0x0000;
W[P0] = R0;
SSYNC;

IDLE;
/* issue core reset */
raise 1;

RTS;
ENDPROC(_bfin_reset)

.data

Expand Down

0 comments on commit dadac28

Please sign in to comment.