diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 13:08:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 13:08:43 -0400 |
commit | 54cebc68c81eacac41a21bdfe99dc889d3882c60 (patch) | |
tree | da1d3872c6ddf208768e784bd1ea09054a81462d /arch/blackfin/mach-common/head.S | |
parent | fffdedef691a0f6fa7ca1fc0a2a508cbb49def69 (diff) | |
parent | 71de1f8a6365ea65346881e526132563d93696d1 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (60 commits)
Blackfin arch: make sure we include the fix for SPORT hysteresis when reprogramming clocks
Blackfin arch: Fix bogus str_ident check in gpio code
Blackfin arch: AD7879 Touchscreen driver
Blackfin arch: introducing bfin_addr_dcachable
Blackfin arch: fix a typo in comments
Blackfin arch: Remove useless head file
Blackfin arch: make sure L2 start and length are always defined (fixes building on BF542)
Blackfin arch: use the Blackfin on-chip ROM to do software reset when possible
Blackfin arch: update anomaly headers to match the latest sheet
Blackfin arch: bfin_reset() is an internal reboot function ... everyone should go through machine_restart()
Blackfin arch: print out error/warning if you are running on the incorrect CPU type
Blackfin arch: remove non-bf54x ifdef logic since this file is only compiled on bf54x parts
Blackfin arch: update board defconfigs
Blackfin arch: Add optional verbose debug
Blackfin arch: emulate a TTY over the EMUDAT/JTAG interface
Blackfin arch: have is_user_addr_valid() check for overflows (like when address is -1)
Blackfin arch: ptrace - fix off-by-one check on end of memory regions
Blackfin arch: Enable framebuffer support for the BF526-EZkit TFT LCD display
Blackfin arch: flash memory map and dm9000 resources updating
Blackfin arch: early prink code still use uart core console functions to parse and set configure option string
...
Diffstat (limited to 'arch/blackfin/mach-common/head.S')
-rw-r--r-- | arch/blackfin/mach-common/head.S | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S index 191b4e974c4b..3069df580729 100644 --- a/arch/blackfin/mach-common/head.S +++ b/arch/blackfin/mach-common/head.S | |||
@@ -68,6 +68,16 @@ ENTRY(__start) | |||
68 | M2 = r0; | 68 | M2 = r0; |
69 | M3 = r0; | 69 | M3 = r0; |
70 | 70 | ||
71 | /* | ||
72 | * Clear ITEST_COMMAND and DTEST_COMMAND registers, | ||
73 | * Leaving these as non-zero can confuse the emulator | ||
74 | */ | ||
75 | p0.L = LO(DTEST_COMMAND); | ||
76 | p0.H = HI(DTEST_COMMAND); | ||
77 | [p0] = R0; | ||
78 | [p0 + (ITEST_COMMAND - DTEST_COMMAND)] = R0; | ||
79 | CSYNC; | ||
80 | |||
71 | trace_buffer_init(p0,r0); | 81 | trace_buffer_init(p0,r0); |
72 | P0 = R1; | 82 | P0 = R1; |
73 | R0 = R1; | 83 | R0 = R1; |
@@ -90,12 +100,46 @@ ENTRY(__start) | |||
90 | [p0] = R0; | 100 | [p0] = R0; |
91 | SSYNC; | 101 | SSYNC; |
92 | 102 | ||
93 | /* Save RETX, in case of doublefault */ | 103 | /* in case of double faults, save a few things */ |
94 | p0.l = ___retx; | 104 | p0.l = _init_retx; |
95 | p0.h = ___retx; | 105 | p0.h = _init_retx; |
96 | R0 = RETX; | 106 | R0 = RETX; |
97 | [P0] = R0; | 107 | [P0] = R0; |
98 | 108 | ||
109 | #ifdef CONFIG_DEBUG_DOUBLEFAULT | ||
110 | /* Only save these if we are storing them, | ||
111 | * This happens here, since L1 gets clobbered | ||
112 | * below | ||
113 | */ | ||
114 | p0.l = _saved_retx; | ||
115 | p0.h = _saved_retx; | ||
116 | p1.l = _init_saved_retx; | ||
117 | p1.h = _init_saved_retx; | ||
118 | r0 = [p0]; | ||
119 | [p1] = r0; | ||
120 | |||
121 | p0.l = _saved_dcplb_fault_addr; | ||
122 | p0.h = _saved_dcplb_fault_addr; | ||
123 | p1.l = _init_saved_dcplb_fault_addr; | ||
124 | p1.h = _init_saved_dcplb_fault_addr; | ||
125 | r0 = [p0]; | ||
126 | [p1] = r0; | ||
127 | |||
128 | p0.l = _saved_icplb_fault_addr; | ||
129 | p0.h = _saved_icplb_fault_addr; | ||
130 | p1.l = _init_saved_icplb_fault_addr; | ||
131 | p1.h = _init_saved_icplb_fault_addr; | ||
132 | r0 = [p0]; | ||
133 | [p1] = r0; | ||
134 | |||
135 | p0.l = _saved_seqstat; | ||
136 | p0.h = _saved_seqstat; | ||
137 | p1.l = _init_saved_seqstat; | ||
138 | p1.h = _init_saved_seqstat; | ||
139 | r0 = [p0]; | ||
140 | [p1] = r0; | ||
141 | #endif | ||
142 | |||
99 | /* Initialize stack pointer */ | 143 | /* Initialize stack pointer */ |
100 | sp.l = lo(INITIAL_STACK); | 144 | sp.l = lo(INITIAL_STACK); |
101 | sp.h = hi(INITIAL_STACK); | 145 | sp.h = hi(INITIAL_STACK); |
@@ -107,7 +151,7 @@ ENTRY(__start) | |||
107 | #endif | 151 | #endif |
108 | 152 | ||
109 | /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */ | 153 | /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */ |
110 | call _bf53x_relocate_l1_mem; | 154 | call _bfin_relocate_l1_mem; |
111 | #ifdef CONFIG_BFIN_KERNEL_CLOCK | 155 | #ifdef CONFIG_BFIN_KERNEL_CLOCK |
112 | call _start_dma_code; | 156 | call _start_dma_code; |
113 | #endif | 157 | #endif |