Module Name: src Committed By: jmcneill Date: Sat Feb 10 17:41:00 UTC 2024
Modified Files: src/sys/arch/evbppc/wii: machdep.c Log Message: wii: Simplify available memory logic. Use usable MEM2 fields in Broadway / IOS Global memory locations to determine available memory. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/arch/evbppc/wii/machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/evbppc/wii/machdep.c diff -u src/sys/arch/evbppc/wii/machdep.c:1.4 src/sys/arch/evbppc/wii/machdep.c:1.5 --- src/sys/arch/evbppc/wii/machdep.c:1.4 Wed Jan 24 21:53:34 2024 +++ src/sys/arch/evbppc/wii/machdep.c Sat Feb 10 17:41:00 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.4 2024/01/24 21:53:34 jmcneill Exp $ */ +/* $NetBSD: machdep.c,v 1.5 2024/02/10 17:41:00 jmcneill Exp $ */ /* * Copyright (c) 2002, 2024 The NetBSD Foundation, Inc. @@ -63,7 +63,7 @@ #define _POWERPC_BUS_DMA_PRIVATE #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.4 2024/01/24 21:53:34 jmcneill Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.5 2024/02/10 17:41:00 jmcneill Exp $"); #include "opt_compat_netbsd.h" #include "opt_ddb.h" @@ -228,7 +228,7 @@ initppc(u_int startkernel, u_int endkern extern u_long ticks_per_sec; extern unsigned char edata[], end[]; extern struct wii_argv wii_argv; - uint32_t mem2_size; + uint32_t mem2_start, mem2_end; register_t scratch; memset(&edata, 0, end - edata); /* clear BSS */ @@ -240,7 +240,8 @@ initppc(u_int startkernel, u_int endkern } } - mem2_size = in32(GLOBAL_MEM2_SIZE); + mem2_start = in32(GLOBAL_MEM2_AVAIL_START) & ~0x80000000; + mem2_end = in32(GLOBAL_MEM2_AVAIL_END) & ~0x80000000; /* MEM1 24MB 1T-SRAM */ physmemr[0].start = WII_MEM1_BASE; @@ -248,7 +249,7 @@ initppc(u_int startkernel, u_int endkern /* MEM2 64MB GDDR3 */ physmemr[1].start = WII_MEM2_BASE; - physmemr[1].size = mem2_size; + physmemr[1].size = WII_MEM2_SIZE; physmemr[2].size = 0; @@ -259,16 +260,8 @@ initppc(u_int startkernel, u_int endkern availmemr[0].size -= XFB_SIZE; /* MEM2 available memory */ - availmemr[1].start = physmemr[1].start; - availmemr[1].size = physmemr[1].size; - if (mem2_size != 0) { - /* DSP uses 16KB at the start of MEM2 */ - availmemr[1].start += DSP_MEM_SIZE; - availmemr[1].size -= DSP_MEM_SIZE; - /* IPC and Starlet use memory at the end of MEM2 */ - availmemr[1].size -= IPC_SIZE; - availmemr[1].size -= ARM_SIZE; - } + availmemr[1].start = mem2_start; + availmemr[1].size = mem2_end - mem2_start; availmemr[2].size = 0;