From 34f3cf4b9e1961348f02121ff1627bfa82f5050a Mon Sep 17 00:00:00 2001 From: "Guillermo J. Rozas" Date: Tue, 6 Jul 1993 03:58:25 +0000 Subject: [PATCH] Fix an out-of-range error because the @PCRXS addressing mode has a limited range. --- v7/src/compiler/machines/bobcat/rules3.scm | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/v7/src/compiler/machines/bobcat/rules3.scm b/v7/src/compiler/machines/bobcat/rules3.scm index 155190c66..0d0b818e3 100644 --- a/v7/src/compiler/machines/bobcat/rules3.scm +++ b/v7/src/compiler/machines/bobcat/rules3.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: rules3.scm,v 4.39 1993/07/06 00:56:29 gjr Exp $ +$Id: rules3.scm,v 4.40 1993/07/06 03:58:25 gjr Exp $ Copyright (c) 1988-1993 Massachusetts Institute of Technology @@ -823,8 +823,8 @@ long-word aligned and there is no need for shuffling. (define (generate/remote-links n-code-blocks code-blocks-label n-sections) (if (= n-code-blocks 0) (LAP) - (let ((loop (generate-label)) - (bytes (generate-label))) + (let ((loop (generate-label 'LOOP)) + (bytes (generate-label 'BYTES))) (LAP (CLR L (D 0)) ;; Set up counter (MOV L (D 0) (@-A 7)) @@ -841,7 +841,12 @@ long-word aligned and there is no need for shuffling. (MOV L (@AOXS 0 4 ((D 0) L 4)) (D 2)) ;; Get number of linkage sections (CLR L (D 4)) - (MOV B (@PCRXS ,bytes ((D 0) L 1)) (D 4)) + ,@(if (<= n-code-blocks 100) + ;; Approximate decision, to avoid extending the + ;; branch tensioner. + (LAP (MOV B (@PCRXS ,bytes ((D 0) L 1)) (D 4))) + (LAP (LEA (@PCR ,bytes) (A 0)) + (MOV B (@AOXS 0 0 ((D 0) L 1)) (D 4)))) ;; block -> address (AND L (D 7) (D 2)) (MOV L (D 2) (A 0)) -- 2.25.1