forked from len0rd/rockbox
ipodvideo: detect ram size at boot (doesn't actually get USED yet)
This is the first step to allowing a single build which will work on any ipodvideo. A global variable, probed_ramsize, is initialised to either 32 or 64 early in boot. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27937 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
47c510b9dc
commit
8aa175bc1f
3 changed files with 33 additions and 0 deletions
|
|
@ -137,6 +137,24 @@ pad_skip:
|
|||
mov r1, #0
|
||||
str r1, [r2]
|
||||
|
||||
#if defined(IPOD_VIDEO)
|
||||
/* detect 32mb vs 64mb model */
|
||||
/* we do this here because after SDRAM is remapped, we already assumed */
|
||||
/* its size to be whatever we were compiled for. */
|
||||
|
||||
mov r2, #0x12000000
|
||||
mov r3, #64
|
||||
strb r3, [r2, #-1] /* first write 64 to last byte of first 32MB bank */
|
||||
|
||||
mov r2, #0x14000000
|
||||
mov r3, #32
|
||||
strb r3, [r2, #-1] /* now write 32 to last byte of second 32MB bank */
|
||||
|
||||
/* now the last word of the first 32MB bank tells you the RAM size */
|
||||
/* since on a 32MB model both writes will touch the same actual location */
|
||||
/* this is read later on in boot */
|
||||
#endif
|
||||
|
||||
mov r2, #0x40000000
|
||||
ldr r3, =remap_start
|
||||
ldr r4, =remap_end
|
||||
|
|
|
|||
|
|
@ -42,6 +42,10 @@ extern void SERIAL0(void);
|
|||
static struct corelock cpufreq_cl SHAREDBSS_ATTR;
|
||||
#endif
|
||||
|
||||
#if defined(IPOD_VIDEO) && !defined(BOOTLOADER)
|
||||
unsigned char probed_ramsize;
|
||||
#endif
|
||||
|
||||
void __attribute__((interrupt("IRQ"))) irq_handler(void)
|
||||
{
|
||||
if(CURRENT_CORE == CPU)
|
||||
|
|
@ -518,6 +522,13 @@ void system_init(void)
|
|||
#else
|
||||
pp_set_cpu_frequency(CPUFREQ_MAX);
|
||||
#endif
|
||||
|
||||
#if defined(IPOD_VIDEO)
|
||||
/* crt0-pp.S wrote the ram size to the last byte of the first 32MB
|
||||
ram bank. See the comment there for how we determine it. */
|
||||
volatile unsigned char *end32 = (volatile unsigned char *)0x01ffffff;
|
||||
probed_ramsize = *end32;
|
||||
#endif
|
||||
}
|
||||
|
||||
init_cache();
|
||||
|
|
|
|||
|
|
@ -172,6 +172,10 @@ static inline void wake_core(int core)
|
|||
#define HAVE_CPUCACHE_FLUSH
|
||||
#endif
|
||||
|
||||
#if defined(IPOD_VIDEO) && !defined(BOOTLOADER)
|
||||
extern unsigned char probed_ramsize;
|
||||
#endif
|
||||
|
||||
#endif /* CPU_PP */
|
||||
|
||||
#endif /* SYSTEM_TARGET_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue