Ejemplo n.º 1
0
static void mem_cb(uint32_t addr, uint32_t len)
{
#ifdef DEBUG
	printf("MEMORY: addr: %x, len: %x\n", addr, len);
#endif

	if(addr < 0x100000)
	{
		addr = 0x100000;
		len -= 0x100000;
	}
	chunk_register_free(addr, len);
}
Ejemplo n.º 2
0
void atag_cb(struct atag *tag)
{
	switch(tag->hdr.tag)
	{
		case ATAG_CORE:
#ifdef ATAG_DEBUG
			puts("ATAG_CORE");
			if(tag->hdr.size == 5)
			{
				puts("flags");
				puthex(tag->u.core.flags);
				puts("");

				puts("pagesize");
				puthex(tag->u.core.pagesize);
				puts("");

				puts("rootdev");
				puthex(tag->u.core.rootdev);
				puts("");
			}
#endif
			break;

		case ATAG_MEM:
#ifdef ATAG_DEBUG
			puts("ATAG_MEM");
			
			puts("start");
			puthex(tag->u.mem.start);
			puts("");
			
			puts("size");
			puthex(tag->u.mem.size);
			puts("");
#endif

			{
				uint32_t start = tag->u.mem.start;
				uint32_t size = tag->u.mem.size;

				if(start < 0x100000)
					start = 0x100000;
				size -= 0x100000;
				chunk_register_free(start, size);
			}
			
			break;

		case ATAG_NONE:
			break;

		case ATAG_CMDLINE:
#ifdef ATAG_CMDLINE
			puts("ATAG_CMDLINE");
			puts(&tag->u.cmdline.cmdline[0]);
#endif
			atag_cmd_line = &tag->u.cmdline.cmdline[0];
			break;

		default:
			puts("Unknown ATAG");
			puthex(tag->hdr.tag);
			break;
	};

	puts("");
}