4 /* All this should be defined somewhere in danube.h later... */
6 #define MPS_SRAM_BASE_ADDRESS 0xBF200000
7 #define MPS_SRAM_BOOT_OFFSET 0x1C0
9 /* Offset for CPU1 (both CPUs have same register set) */
10 #define BOOT_BASE_ADDRESS (MPS_SRAM_BASE_ADDRESS + MPS_SRAM_BOOT_OFFSET)
11 #define BOOT_CPU_OFFSET 0x20
15 #define BOOT_RVEC (BOOT_BASE_ADDRESS + 0x00)
16 #define BOOT_NVEC (BOOT_BASE_ADDRESS + 0x04)
17 #define BOOT_EVEC (BOOT_BASE_ADDRESS + 0x08)
18 #define BOOT_CP0_CAUSE (BOOT_BASE_ADDRESS + 0x0C)
19 #define BOOT_CP0_EPC (BOOT_BASE_ADDRESS + 0x10)
20 #define BOOT_CP0_EEPC (BOOT_BASE_ADDRESS + 0x14)
21 #define BOOT_SIZE (BOOT_BASE_ADDRESS + 0x18) /* for CPU1 */
22 #define BOOT_RCU_SR (BOOT_BASE_ADDRESS + 0x18) /* for CPU0 */
23 #define BOOT_CFG_STAT (BOOT_BASE_ADDRESS + 0x1C)
25 #define BOOT_RVEC(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x00)
26 #define BOOT_NVEC(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x04)
27 #define BOOT_EVEC(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x08)
28 #define BOOT_CP0_STATUS(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x0C)
29 #define BOOT_CP0_EPC(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x10)
30 #define BOOT_CP0_EEPC(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x14)
31 #define BOOT_SIZE(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x18) /* for CPU1 */
32 #define BOOT_RCU_SR(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x18) /* for CPU0 */
33 #define BOOT_CFG_STAT(cpu) (volatile u32*)(BOOT_BASE_ADDRESS + (cpu * BOOT_CPU_OFFSET) + 0x1C)
36 #define BOOT_CFG_NOR 0x01
37 #define BOOT_CFG_MII 0x02
38 #define BOOT_CFG_PCI 0x03
39 #define BOOT_CFG_ASC 0x04
40 #define BOOT_CFG_SFLASH 0x05
41 #define BOOT_CFG_NAND 0x06
42 #define BOOT_CFG_RMII 0x07
43 #define BOOT_CFG_TEST 0x00
45 #define BOOT_NUM_RETRY 3
47 #define BOOT_STAT_MASK_ALL 0x0000FFFF
48 #define BOOT_STAT_MASK_STAT 0x0000F000
49 #define BOOT_STAT_MASK_BERR 0x00000F00
50 #define BOOT_STAT_MASK_BSTRAP 0x000000F0
51 #define BOOT_STAT_MASK_BMODULE 0x0000000F
53 #define BOOT_STAT_INIT 0x00000000
54 #define BOOT_STAT_BSTRAP 0x00001000
55 #define BOOT_STAT_RETRY 0x00002000
56 #define BOOT_STAT_START 0x00003000
57 #define BOOT_STAT_HALT 0x0000F000
59 #define BOOT_ERR_NO_RVEC 0x00000100
60 #define BOOT_ERR_NO_NVEC 0x00000200
61 #define BOOT_ERR_NO_EVEC 0x00000300
62 #define BOOT_ERR_BSTRAP 0x00000400
63 #define BOOT_ERR_EXC 0x00000800
66 void boot_set_status( u32 status
, u32 mask
);
67 void boot_set_config( u32 config
);
68 void boot_set_rvec( u32 vector
);
69 void boot_set_size( u32 size
);
70 void boot_sdbg( u8
* string
, u32 value
);
71 void boot_error( u32 berr
);
72 int boot_from_ebu(void);
73 void _boot_rvec(void);
76 u32 cpu
; /** CPU number */
77 u32 config
; /** Boot configuration */
78 u32 endian
; /** CPU endianess */
79 u32 debug
; /** Debug mode */
80 u32 (*exit
)(void); /** application vector */
83 extern boot_data bootrom
;
86 #endif /* #ifdef _BOOT_H */
This page took 0.049153 seconds and 5 git commands to generate.