Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Jun 2014 21:35:10 +0000 (UTC)
From:      Zbigniew Bodek <zbb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r267129 - head/sys/arm/mv/armadaxp
Message-ID:  <201406052135.s55LZAEv097496@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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):



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406052135.s55LZAEv097496>