summaryrefslogtreecommitdiff
path: root/arch/cris/arch-v32/boot/rescue/head.S
blob: 61ede5f30f99451243156d66c25a653788c92b39 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
/* $Id: head.S,v 1.4 2004/11/01 16:10:28 starvik Exp $
 *
 * This used to be the rescue code but now that is handled by the
 * RedBoot based RFL instead. Nothing to see here, move along.
 */

#include <linux/config.h>
#include <asm/arch/hwregs/reg_map_asm.h>
#include <asm/arch/hwregs/config_defs_asm.h>

	.text

	;; Start clocks for used blocks.
	move.d REG_ADDR(config, regi_config, rw_clk_ctrl), $r1
	move.d [$r1], $r0
	or.d   REG_STATE(config, rw_clk_ctrl, cpu, yes) | \
	       REG_STATE(config, rw_clk_ctrl, bif, yes) | \
	       REG_STATE(config, rw_clk_ctrl, fix_io, yes), $r0
	move.d $r0, [$r1]

	;; Copy 68KB NAND flash to Internal RAM (if NAND boot)
	move.d 0x38004000, $r10
	move.d 0x8000, $r11
	move.d 0x11000, $r12
	move.d copy_complete, $r13
	and.d  0x000fffff, $r13
	or.d   0x38000000, $r13

#include "../../lib/nand_init.S"

	;; No NAND found
	move.d	CONFIG_ETRAX_PTABLE_SECTOR, $r10
	jump	$r10 ; Jump to decompresser
	nop

copy_complete:
	move.d	0x38000000 + CONFIG_ETRAX_PTABLE_SECTOR, $r10
	jump	$r10 ; Jump to decompresser
	nop