svn commit: r267129 - head/sys/arm/mv/armadaxp
Zbigniew Bodek
zbb at FreeBSD.org
Thu Jun 5 21:35:11 UTC 2014
Author: zbb
Date: Thu Jun 5 21:35:10 2014
New Revision: 267129
URL: http://svnweb.freebsd.org/changeset/base/267129
Log:
Fix broken SMP startup on Armada XP after r265694
During Armada's platform_mp_start_ap(), mptramp code
is being copied to the specific physical location (0xffff0000).
Before r265694 the address to which the code should be copied
was equal to the address of mpentry routine that followed the
mptramp in locore.S. Now the mptramp end address should be
exported and used as a copy limit.
Reviewed by: gber
Modified:
head/sys/arm/mv/armadaxp/armadaxp_mp.c
head/sys/arm/mv/armadaxp/mptramp.S
Modified: head/sys/arm/mv/armadaxp/armadaxp_mp.c
==============================================================================
--- head/sys/arm/mv/armadaxp/armadaxp_mp.c Thu Jun 5 21:12:41 2014 (r267128)
+++ head/sys/arm/mv/armadaxp/armadaxp_mp.c Thu Jun 5 21:35:10 2014 (r267129)
@@ -97,8 +97,7 @@ platform_mp_init_secondary(void)
}
void mptramp(void);
-
-
+void mptramp_end(void);
void
platform_mp_start_ap(void)
@@ -116,7 +115,7 @@ platform_mp_start_ap(void)
pmap_kenter_nocache(smp_boot, 0xffff0000);
dst = (uint32_t *) smp_boot;
- for (src = (uint32_t *)mptramp; src < (uint32_t *)mpentry;
+ for (src = (uint32_t *)mptramp; src < (uint32_t *)mptramp_end;
src++, dst++) {
*dst = *src;
}
Modified: head/sys/arm/mv/armadaxp/mptramp.S
==============================================================================
--- head/sys/arm/mv/armadaxp/mptramp.S Thu Jun 5 21:12:41 2014 (r267128)
+++ head/sys/arm/mv/armadaxp/mptramp.S Thu Jun 5 21:35:10 2014 (r267129)
@@ -54,3 +54,5 @@ Lpmureg:
.word 0xd0022124
END(mptramp)
+ .global _C_LABEL(mptramp_end)
+_C_LABEL(mptramp_end):
More information about the svn-src-head
mailing list