[SLOF] [PATCH slof v2 3/5] pci-scan: Move pci-next-mem alignment to helpers

Alexey Kardashevskiy aik at ozlabs.ru
Sat Jul 22 00:44:31 AEST 2017


This should cause no behavioral change.

Signed-off-by: Alexey Kardashevskiy <aik at ozlabs.ru>
---
 slof/fs/pci-scan.fs | 30 ++++++++++++++++++++++--------
 1 file changed, 22 insertions(+), 8 deletions(-)

diff --git a/slof/fs/pci-scan.fs b/slof/fs/pci-scan.fs
index c1938d1..bda8607 100644
--- a/slof/fs/pci-scan.fs
+++ b/slof/fs/pci-scan.fs
@@ -113,14 +113,26 @@ here 100 allot CONSTANT pci-device-vec
     pci-next-mem64 @ 0<> and
 ;
 
+: pci-next-mem-align-1mb ( -- pci-next-mem )
+    pci-next-mem @
+    100000 #aligned                         \ align to 1MB boundary
+    dup pci-next-mem !
+;
+
+: pci-next-mem-extend-1mb ( -- pci-next-mem )
+    pci-next-mem @
+    100000 +                                \ add space for hot-plugging
+    100000 #aligned                         \ align to 1MB boundary
+    dup pci-next-mem !
+;
+
 \ Update pci-next-mem to be 1MB aligned and set the mem-base and mem-base-upper register
 \ and set the Limit register to the maximum available address space
 \ needed for scanning possible devices behind the bridge
 : pci-bridge-set-mem-base ( addr -- )
-    pci-next-mem @ 100000 #aligned          \ read the current Value and align to 1MB boundary
-    dup pci-next-mem !                      \ and write it back
-    over pci-bridge-has-mem64               \ check if 64bit support
+    dup pci-bridge-has-mem64                \ check if 64bit support
     IF                                      \ IF 64 bit support
+        pci-next-mem-align-1mb
         pci-next-mem64 @ 100000000 #aligned \ | read the current Value of 64-bit and align to 4GB boundary
         dup 100000000 + pci-next-mem64 x!   \ | and write back with 1GB for bridge
         2 pick swap                         \ |
@@ -132,6 +144,7 @@ here 100 allot CONSTANT pci-device-vec
         pci-max-mem @ 1- FFFF0000 and or    \ | and Insert mmem Limit (set it to max)
         swap 24 + rtas-config-l!            \ | and write it into the bridge
     ELSE
+        pci-next-mem-align-1mb
         10 rshift                           \ | keep upper 16 bits
         pci-max-mem @ 1- FFFF0000 and or    \ | and Insert mmem Limit (set it to max)
         swap 24 + rtas-config-l!            \ | and write it into the bridge
@@ -142,12 +155,10 @@ here 100 allot CONSTANT pci-device-vec
 \ The Limit Value is one less then the upper boundary
 \ If the limit is less than the base the mem is disabled
 : pci-bridge-set-mem-limit ( addr -- )
-    pci-next-mem @ 100000 +                 \ add space for hot-plugging
-    100000 #aligned                         \ align to 1MB boundary
-    dup pci-next-mem !                      \ and write it back
-    1-                                      \ make limit one less than boundary
-    over pci-bridge-has-mem64               \ check if 64bit support
+    dup pci-bridge-has-mem64                \ check if 64bit support
     IF                                      \ IF 64 bit support
+        pci-next-mem-extend-1mb
+        1-                                  \ | make limit one less than boundary
         pci-next-mem64 @ 100000000 #aligned \ | Reat current value of 64-bar and align at 4GB
         dup pci-next-mem64 x!               \ | and write it back
         1-                                  \ | make limite one less than boundary
@@ -159,6 +170,9 @@ here 100 allot CONSTANT pci-device-vec
         0000FFFF and                        \ | fetch original Value
         or swap 24 + rtas-config-l!         \ | and write it into the bridge
     ELSE
+        \ Update current variable (add space for hot-plugging and align it)
+        pci-next-mem-extend-1mb
+        1-                                  \ | make limit one less than boundary
         FFFF0000 and                        \ | keep upper 16 bits
         over 24 + rtas-config-l@
         0000FFFF and                        \ | fetch original Value
-- 
2.11.0



More information about the SLOF mailing list