Page MenuHomeFreeBSD

D8010.id20637.diff
No OneTemporary

D8010.id20637.diff

Index: head/sys/arm/allwinner/aw_machdep.c
===================================================================
--- head/sys/arm/allwinner/aw_machdep.c
+++ head/sys/arm/allwinner/aw_machdep.c
@@ -146,8 +146,8 @@
return (0);
}
-void
-cpu_reset()
+static void
+allwinner_cpu_reset(platform_t plat)
{
aw_wdog_watchdog_reset();
printf("Reset failed!\n");
@@ -159,6 +159,7 @@
PLATFORMMETHOD(platform_attach, a10_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
PLATFORMMETHOD_END,
};
@@ -170,6 +171,7 @@
PLATFORMMETHOD(platform_attach, a13_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
PLATFORMMETHOD_END,
};
@@ -181,6 +183,7 @@
PLATFORMMETHOD(platform_attach, a20_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
@@ -196,6 +199,7 @@
PLATFORMMETHOD(platform_attach, a31_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
@@ -211,6 +215,7 @@
PLATFORMMETHOD(platform_attach, a31s_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
@@ -226,6 +231,7 @@
PLATFORMMETHOD(platform_attach, a83t_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, a83t_mp_start_ap),
@@ -241,6 +247,7 @@
PLATFORMMETHOD(platform_attach, h3_attach),
PLATFORMMETHOD(platform_lastaddr, allwinner_lastaddr),
PLATFORMMETHOD(platform_devmap_init, allwinner_devmap_init),
+ PLATFORMMETHOD(platform_cpu_reset, allwinner_cpu_reset),
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, aw_mp_start_ap),
Index: head/sys/arm/arm/platform.c
===================================================================
--- head/sys/arm/arm/platform.c
+++ head/sys/arm/arm/platform.c
@@ -188,6 +188,20 @@
PLATFORM_LATE_INIT(plat_obj);
}
+void
+cpu_reset(void)
+{
+
+ PLATFORM_CPU_RESET(plat_obj);
+
+ printf("cpu_reset failed");
+
+ intr_disable();
+ while(1) {
+ cpu_sleep(0);
+ }
+}
+
#ifdef MULTIDELAY
static void
platform_delay(int usec, void *arg __unused)
Index: head/sys/arm/arm/platform_if.m
===================================================================
--- head/sys/arm/arm/platform_if.m
+++ head/sys/arm/arm/platform_if.m
@@ -133,3 +133,10 @@
METHOD void mp_start_ap {
platform_t _plat;
};
+
+/**
+ * @brief Called by cpu_reset to reboot.
+ */
+METHOD void cpu_reset {
+ platform_t _plat;
+};
Index: head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
===================================================================
--- head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
+++ head/sys/arm/broadcom/bcm2835/bcm2835_machdep.c
@@ -114,11 +114,10 @@
-void
-cpu_reset()
+static void
+bcm2835_cpu_reset(platform_t plat)
{
bcmwd_watchdog_reset();
- while (1);
}
#ifdef SOC_BCM2835
@@ -126,6 +125,7 @@
PLATFORMMETHOD(platform_devmap_init, bcm2835_devmap_init),
PLATFORMMETHOD(platform_lastaddr, bcm2835_lastaddr),
PLATFORMMETHOD(platform_late_init, bcm2835_late_init),
+ PLATFORMMETHOD(platform_cpu_reset, bcm2835_cpu_reset),
PLATFORMMETHOD_END,
};
Index: head/sys/arm/freescale/imx/imx51_machdep.c
===================================================================
--- head/sys/arm/freescale/imx/imx51_machdep.c
+++ head/sys/arm/freescale/imx/imx51_machdep.c
@@ -81,8 +81,8 @@
return (0);
}
-void
-cpu_reset(void)
+static void
+imx51_cpu_reset(platform_t plat)
{
imx_wdog_cpu_reset(0x73F98000);
@@ -97,6 +97,7 @@
PLATFORMMETHOD(platform_attach, imx51_attach),
PLATFORMMETHOD(platform_devmap_init, imx51_devmap_init),
PLATFORMMETHOD(platform_lastaddr, imx51_lastaddr),
+ PLATFORMMETHOD(platform_cpu_reset, imx51_cpu_reset),
PLATFORMMETHOD_END,
};
Index: head/sys/arm/freescale/imx/imx53_machdep.c
===================================================================
--- head/sys/arm/freescale/imx/imx53_machdep.c
+++ head/sys/arm/freescale/imx/imx53_machdep.c
@@ -81,8 +81,8 @@
return (0);
}
-void
-cpu_reset(void)
+static void
+imx53_cpu_reset(platform_t plat)
{
imx_wdog_cpu_reset(0x53F98000);
@@ -97,6 +97,7 @@
PLATFORMMETHOD(platform_attach, imx53_attach),
PLATFORMMETHOD(platform_devmap_init, imx53_devmap_init),
PLATFORMMETHOD(platform_lastaddr, imx53_lastaddr),
+ PLATFORMMETHOD(platform_cpu_reset, imx53_cpu_reset),
PLATFORMMETHOD_END,
};
Index: head/sys/arm/freescale/imx/imx6_machdep.c
===================================================================
--- head/sys/arm/freescale/imx/imx6_machdep.c
+++ head/sys/arm/freescale/imx/imx6_machdep.c
@@ -227,8 +227,8 @@
return (0);
}
-void
-cpu_reset(void)
+static void
+imx6_cpu_reset(platform_t plat)
{
const uint32_t IMX6_WDOG_CR_PHYS = 0x020bc000;
@@ -350,6 +350,7 @@
PLATFORMMETHOD(platform_lastaddr, imx6_lastaddr),
PLATFORMMETHOD(platform_devmap_init, imx6_devmap_init),
PLATFORMMETHOD(platform_late_init, imx6_late_init),
+ PLATFORMMETHOD(platform_cpu_reset, imx6_cpu_reset),
PLATFORMMETHOD_END,
};
Index: head/sys/arm/nvidia/tegra124/tegra124_machdep.c
===================================================================
--- head/sys/arm/nvidia/tegra124/tegra124_machdep.c
+++ head/sys/arm/nvidia/tegra124/tegra124_machdep.c
@@ -97,8 +97,8 @@
return (0);
}
-void
-cpu_reset(void)
+static void
+tegra124_cpu_reset(platform_t plat)
{
bus_space_handle_t pmc;
uint32_t reg;
@@ -148,6 +148,8 @@
PLATFORMMETHOD(platform_lastaddr, tegra124_lastaddr),
PLATFORMMETHOD(platform_devmap_init, tegra124_devmap_init),
PLATFORMMETHOD(platform_late_init, tegra124_late_init),
+ PLATFORMMETHOD(platform_cpu_reset, tegra124_cpu_reset),
+
#ifdef SMP
PLATFORMMETHOD(platform_mp_start_ap, tegra124_mp_start_ap),
PLATFORMMETHOD(platform_mp_setmaxid, tegra124_mp_setmaxid),
Index: head/sys/arm/qemu/virt_machdep.c
===================================================================
--- head/sys/arm/qemu/virt_machdep.c
+++ head/sys/arm/qemu/virt_machdep.c
@@ -44,13 +44,6 @@
#include "platform_if.h"
-void
-cpu_reset(void)
-{
-
- while (1);
-}
-
static vm_offset_t
virt_lastaddr(platform_t plat)
{
Index: head/sys/arm/ti/ti_machdep.c
===================================================================
--- head/sys/arm/ti/ti_machdep.c
+++ head/sys/arm/ti/ti_machdep.c
@@ -95,21 +95,20 @@
}
#endif
-void
-cpu_reset()
+static void
+ti_plat_cpu_reset(platform_t plat)
{
if (ti_cpu_reset)
(*ti_cpu_reset)();
else
printf("no cpu_reset implementation\n");
- printf("Reset failed!\n");
- while (1);
}
#if defined(SOC_OMAP4)
static platform_method_t omap4_methods[] = {
PLATFORMMETHOD(platform_devmap_init, ti_omap4_devmap_init),
PLATFORMMETHOD(platform_lastaddr, ti_lastaddr),
+ PLATFORMMETHOD(platform_cpu_reset, ti_plat_cpu_reset),
PLATFORMMETHOD_END,
};
@@ -120,6 +119,7 @@
static platform_method_t am335x_methods[] = {
PLATFORMMETHOD(platform_devmap_init, ti_am335x_devmap_init),
PLATFORMMETHOD(platform_lastaddr, ti_lastaddr),
+ PLATFORMMETHOD(platform_cpu_reset, ti_plat_cpu_reset),
PLATFORMMETHOD_END,
};

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 21, 6:02 AM (6 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25739190
Default Alt Text
D8010.id20637.diff (7 KB)

Event Timeline