#include "sticore.h"
 
 /* REGION_BASE(fb_info, index) returns the virtual address for region <index> */
-#ifdef __LP64__
-  #define REGION_BASE(fb_info, index) \
-       (fb_info->sti->glob_cfg->region_ptrs[index] | 0xffffffff00000000)
-#else
-  #define REGION_BASE(fb_info, index) \
-       fb_info->sti->glob_cfg->region_ptrs[index]
-#endif
+#define REGION_BASE(fb_info, index) \
+       F_EXTEND(fb_info->sti->glob_cfg->region_ptrs[index])
 
 #define NGLEDEVDEPROM_CRT_REGION 1
 
                memset(&fb->ngle_rom, 0, sizeof(fb->ngle_rom));
                if ((fb->sti->regions_phys[0] & 0xfc000000) ==
                    (fb->sti->regions_phys[2] & 0xfc000000))
-                       sti_rom_address = fb->sti->regions_phys[0];
+                       sti_rom_address = F_EXTEND(fb->sti->regions_phys[0]);
                else
-                       sti_rom_address = fb->sti->regions_phys[1];
-#ifdef __LP64__
-               sti_rom_address |= 0xffffffff00000000;
-#endif
+                       sti_rom_address = F_EXTEND(fb->sti->regions_phys[1]);
+
                fb->deviceSpecificConfig = gsc_readl(sti_rom_address);
                if (IS_24_DEVICE(fb)) {
                        if (bpp_pref == 8 || bpp_pref == 32)