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;