From owner-svn-src-head@freebsd.org Sat Jul 23 02:27:43 2016 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 5E27EBA0CFC; Sat, 23 Jul 2016 02:27:43 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 14D071B84; Sat, 23 Jul 2016 02:27:43 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u6N2Rga3002224; Sat, 23 Jul 2016 02:27:42 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u6N2Rgiw002223; Sat, 23 Jul 2016 02:27:42 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201607230227.u6N2Rgiw002223@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Sat, 23 Jul 2016 02:27:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r303209 - head/sys/powerpc/booke X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Jul 2016 02:27:43 -0000 Author: jhibbits Date: Sat Jul 23 02:27:42 2016 New Revision: 303209 URL: https://svnweb.freebsd.org/changeset/base/303209 Log: Use label math instead of hard-coding offsets for return addresses. Though the chances of the code in these sections changing are low, future-proof the sections and use label math. Renumber the surrounding areas to avoid duplicate label numbers. Modified: head/sys/powerpc/booke/locore.S Modified: head/sys/powerpc/booke/locore.S ============================================================================== --- head/sys/powerpc/booke/locore.S Sat Jul 23 01:21:58 2016 (r303208) +++ head/sys/powerpc/booke/locore.S Sat Jul 23 02:27:42 2016 (r303209) @@ -171,7 +171,7 @@ __start: ori %r3, %r3, (PSL_IS | PSL_DS) bl 2f 2: mflr %r4 - addi %r4, %r4, 20 + addi %r4, %r4, (3f - 2b) mtspr SPR_SRR0, %r4 mtspr SPR_SRR1, %r3 rfi /* Switch context */ @@ -179,6 +179,7 @@ __start: /* * Invalidate initial entry */ +3: mr %r3, %r29 bl tlb1_inval_entry @@ -224,7 +225,7 @@ __start: rlwinm %r4, %r4, 0, 8, 31 /* Current offset from kernel load address */ rlwinm %r3, %r3, 0, 0, 19 add %r4, %r4, %r3 /* Convert to kernel virtual address */ - addi %r4, %r4, 36 + addi %r4, %r4, (5f - 4b) li %r3, PSL_DE /* Note AS=0 */ mtspr SPR_SRR0, %r4 mtspr SPR_SRR1, %r3 @@ -233,6 +234,7 @@ __start: /* * Invalidate temp mapping */ +5: mr %r3, %r28 bl tlb1_inval_entry @@ -362,7 +364,7 @@ bp_kernload: ori %r3, %r3, (PSL_IS | PSL_DS) bl 3f 3: mflr %r4 - addi %r4, %r4, 20 + addi %r4, %r4, (4f - 3b) mtspr SPR_SRR0, %r4 mtspr SPR_SRR1, %r3 rfi /* Switch context */ @@ -370,6 +372,7 @@ bp_kernload: /* * Invalidate initial entry */ +4: mr %r3, %r29 bl tlb1_inval_entry @@ -395,10 +398,10 @@ bp_kernload: isync /* Retrieve kernel load [physical] address from bp_kernload */ - bl 4f + bl 5f .long bp_kernload .long __boot_page -4: mflr %r3 +5: mflr %r3 lwz %r4, 0(%r3) lwz %r5, 4(%r3) rlwinm %r3, %r3, 0, 0, 19 @@ -414,15 +417,16 @@ bp_kernload: msync /* Switch to the final mapping */ - bl 5f -5: mflr %r3 + bl 6f +6: mflr %r3 rlwinm %r3, %r3, 0, 0xfff /* Offset from boot page start */ add %r3, %r3, %r5 /* Make this virtual address */ - addi %r3, %r3, 32 + addi %r3, %r3, (7f - 6b) li %r4, 0 /* Note AS=0 */ mtspr SPR_SRR0, %r3 mtspr SPR_SRR1, %r4 rfi +7: /* * At this point we're running at virtual addresses KERNBASE and beyond so