From owner-svn-src-all@FreeBSD.ORG Mon Jan 25 00:44:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 71F2C106568B; Mon, 25 Jan 2010 00:44:05 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5F7F78FC0A; Mon, 25 Jan 2010 00:44:05 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o0P0i5KG091083; Mon, 25 Jan 2010 00:44:05 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o0P0i5Sv091075; Mon, 25 Jan 2010 00:44:05 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201001250044.o0P0i5Sv091075@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Mon, 25 Jan 2010 00:44:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r202954 - in head/sys/mips: adm5120 alchemy atheros idt malta sentry5 sibyte X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 25 Jan 2010 00:44:05 -0000 Author: gonzo Date: Mon Jan 25 00:44:05 2010 New Revision: 202954 URL: http://svn.freebsd.org/changeset/base/202954 Log: - Call post-boot fixup function in order to get proper static symbols resolving in DDB - When zeroing .bss/.sbss do not round end address to page boundary, it's not neccessary and might destroy data pased by trampoline or boot loader Modified: head/sys/mips/adm5120/adm5120_machdep.c head/sys/mips/alchemy/alchemy_machdep.c head/sys/mips/atheros/ar71xx_machdep.c head/sys/mips/idt/idt_machdep.c head/sys/mips/malta/malta_machdep.c head/sys/mips/sentry5/s5_machdep.c head/sys/mips/sibyte/sb_machdep.c Modified: head/sys/mips/adm5120/adm5120_machdep.c ============================================================================== --- head/sys/mips/adm5120/adm5120_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/adm5120/adm5120_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -94,7 +94,7 @@ mips_init(void) } /* phys_avail regions are in bytes */ - phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); phys_avail[1] = ctob(realmem); physmem = realmem; @@ -153,9 +153,11 @@ platform_start(__register_t a0 __unused, uint64_t platform_counter_freq = 175 * 1000 * 1000; /* clear the BSS and SBSS segments */ - kernend = round_page((vm_offset_t)&end); + kernend = (vm_offset_t)&end; memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + mips_postboot_fixup(); + /* Initialize pcpu stuff */ mips_pcpu0_init(); Modified: head/sys/mips/alchemy/alchemy_machdep.c ============================================================================== --- head/sys/mips/alchemy/alchemy_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/alchemy/alchemy_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -94,7 +94,7 @@ mips_init(void) } /* phys_avail regions are in bytes */ - phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); phys_avail[1] = ctob(realmem); physmem = realmem; @@ -154,9 +154,11 @@ platform_start(__register_t a0 __unused, uint64_t platform_counter_freq = 175 * 1000 * 1000; /* clear the BSS and SBSS segments */ - kernend = round_page((vm_offset_t)&end); + kernend = (vm_offset_t)&end; memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + mips_postboot_fixup(); + /* Initialize pcpu stuff */ mips_pcpu0_init(); Modified: head/sys/mips/atheros/ar71xx_machdep.c ============================================================================== --- head/sys/mips/atheros/ar71xx_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/atheros/ar71xx_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -57,8 +57,8 @@ __FBSDID("$FreeBSD$"); #include -extern int *edata; -extern int *end; +extern char edata[], end[]; + uint32_t ar711_base_mac[ETHER_ADDR_LEN]; /* 4KB static data aread to keep a copy of the bootload env until the dynamic kenv is setup */ @@ -142,16 +142,21 @@ void platform_start(__register_t a0 __unused, __register_t a1 __unused, __register_t a2 __unused, __register_t a3 __unused) { - vm_offset_t kernend; uint64_t platform_counter_freq; uint32_t reg; int argc, i, count = 0; char **argv, **envp; + vm_offset_t kernend; - /* clear the BSS and SBSS segments */ - kernend = round_page((vm_offset_t)&end); + /* + * clear the BSS and SBSS segments, this should be first call in + * the function + */ + kernend = (vm_offset_t)&end; memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + mips_postboot_fixup(); + /* Initialize pcpu stuff */ mips_pcpu0_init(); @@ -186,7 +191,7 @@ platform_start(__register_t a0 __unused, realmem = btoc(32*1024*1024); /* phys_avail regions are in bytes */ - phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); phys_avail[1] = ctob(realmem); physmem = realmem; Modified: head/sys/mips/idt/idt_machdep.c ============================================================================== --- head/sys/mips/idt/idt_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/idt/idt_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -134,9 +134,11 @@ platform_start(__register_t a0, __regist /* clear the BSS and SBSS segments */ - kernend = round_page((vm_offset_t)&end); + kernend = (vm_offset_t)&end; memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + mips_postboot_fixup(); + /* Initialize pcpu stuff */ mips_pcpu0_init(); @@ -162,7 +164,7 @@ platform_start(__register_t a0, __regist } /* phys_avail regions are in bytes */ - phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); phys_avail[1] = ctob(realmem); physmem = realmem; Modified: head/sys/mips/malta/malta_machdep.c ============================================================================== --- head/sys/mips/malta/malta_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/malta/malta_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -178,7 +178,7 @@ mips_init(void) } /* phys_avail regions are in bytes */ - phys_avail[0] = MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); phys_avail[1] = ctob(realmem); physmem = realmem; @@ -293,9 +293,11 @@ platform_start(__register_t a0, __regist int i; /* clear the BSS and SBSS segments */ - kernend = round_page((vm_offset_t)&end); + kernend = (vm_offset_t)&end; memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + mips_postboot_fixup(); + mips_pcpu0_init(); platform_counter_freq = malta_cpu_freq(); mips_timer_early_init(platform_counter_freq); Modified: head/sys/mips/sentry5/s5_machdep.c ============================================================================== --- head/sys/mips/sentry5/s5_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/sentry5/s5_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -119,7 +119,7 @@ mips_init(void) * from CFE, omit the region at the start of physical * memory where the kernel has been loaded. */ - phys_avail[i] += MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[i] += MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); } phys_avail[i + 1] = addr + len; physmem += len; @@ -187,9 +187,11 @@ platform_start(__register_t a0, __regist uint64_t platform_counter_freq; /* clear the BSS and SBSS segments */ - kernend = round_page((vm_offset_t)&end); + kernend = (vm_offset_t)&end; memset(&edata, 0, kernend - (vm_offset_t)(&edata)); + mips_postboot_fixup(); + /* Initialize pcpu stuff */ mips_pcpu0_init(); Modified: head/sys/mips/sibyte/sb_machdep.c ============================================================================== --- head/sys/mips/sibyte/sb_machdep.c Sun Jan 24 22:33:47 2010 (r202953) +++ head/sys/mips/sibyte/sb_machdep.c Mon Jan 25 00:44:05 2010 (r202954) @@ -169,7 +169,7 @@ mips_init(void) * from CFE, omit the region at the start of physical * memory where the kernel has been loaded. */ - phys_avail[i] += MIPS_KSEG0_TO_PHYS((vm_offset_t)&end); + phys_avail[i] += MIPS_KSEG0_TO_PHYS(kernel_kseg0_end); } phys_avail[i + 1] = addr + len; physmem += len; @@ -246,8 +246,6 @@ void platform_start(__register_t a0, __register_t a1, __register_t a2, __register_t a3) { - vm_offset_t kernend; - /* * Make sure that kseg0 is mapped cacheable-coherent */ @@ -255,7 +253,7 @@ platform_start(__register_t a0, __regist /* clear the BSS and SBSS segments */ memset(&edata, 0, (vm_offset_t)&end - (vm_offset_t)&edata); - kernend = round_page((vm_offset_t)&end); + mips_postboot_fixup(); /* Initialize pcpu stuff */ mips_pcpu0_init();