/* Not static inline because used by IP27 special magic initialization code  */
unsigned long setup_zero_pages(void)
/* Not static inline because used by IP27 special magic initialization code  */
unsigned long setup_zero_pages(void)
{
	unsigned int order;
	unsigned long size;
	struct page *page;
	if (cpu_has_vce)
		order = 3;
	else
		order = 0;
	empty_zero_page = __get_free_pages(GFP_KERNEL | __GFP_ZERO, order);
	if (!empty_zero_page)
		panic("Oh boy, that early out of memory?");
	page = virt_to_page((void *)empty_zero_page);
	split_page(page, order);
	while (page < virt_to_page((void *)(empty_zero_page + (PAGE_SIZE << order)))) {
		SetPageReserved(page);
		page++;
	}
	size = PAGE_SIZE << order;
	zero_page_mask = (size - 1) & PAGE_MASK;
	return 1UL << order;
}