Example #1
0
static void create_atags(unsigned taddr, const char *cmdline,
                         unsigned raddr, unsigned rsize)
{
    unsigned n = 0;
    unsigned pcount;
    unsigned *tags = (unsigned *) taddr;

        // ATAG_CORE 
    tags[n++] = 2;
    tags[n++] = 0x54410001;

    if(rsize) {
        // ATAG_INITRD2
        tags[n++] = 4;
        tags[n++] = 0x54420005;
        tags[n++] = raddr;
        tags[n++] = rsize;
    }

    if((pcount = flash_get_ptn_count())){
        ptentry *ptn;
        unsigned pn;
        unsigned m = n + 2;

        for(pn = 0; pn < pcount; pn++) {
            ptn = flash_get_ptn(pn);
            memcpy(tags + m, ptn, sizeof(ptentry));
            m += (sizeof(ptentry) / sizeof(unsigned));
        }
        
        tags[n + 0] = m - n;
        tags[n + 1] = 0x4d534d70;
        n = m;
    }
    if(cmdline && cmdline[0]) {
        const char *src;
        char *dst;
        unsigned len = 0;
        
        dst = (char*) (tags + n + 2);
        src = cmdline;
        while((*dst++ = *src++)) len++;
        
        len++;
        len = (len + 3) & (~3);

            // ATAG_CMDLINE
        tags[n++] = 2 + (len / 4);
        tags[n++] = 0x54410009;

        n += (len / 4);
    }
    
        // ATAG_NONE
    tags[n++] = 0;
    tags[n++] = 0;
}
Example #2
0
void board_init()
{
	unsigned n;

	/* if we already have partitions from elsewhere,
	** don't use the hardcoded ones
	*/
	if(flash_get_ptn_count() == 0) {
		for(n = 0; n < 2; n++) {
			flash_add_ptn(PTABLE + n);
		}
	}

#ifdef DEBUG
	/* UART configuration */
	/* UART1 */
	uart_init(0);
#endif
}