Make linker use bank 0 in relocatable mode
This can be done using directives in both the assembler source and in the linker script.  When you use the udata primitive, the label becomes the section name.

Consider the following example source files similar to what you have provided:

file1.asm

SomeSection   udata
    register1  res 1
    register2  res 1

SomeOtherSection   udata
    register5  res 1
    end


file2.asm

SomeSection   udata
    register3  res 1
    register4  res 1
    end


In file1.asm, there will be two output sections generated by the assembler named SomeSection and SomeOtherSection.  You can verify this by turning on the output map file and looking at the listed section names.

The next step is to tell the link where those sections should be placed in memory, this requires a change to the default linker script.

Locate and copy the default linker script for your device (16f627a_g.lnk) to your project directory and add it in the Linker Script project settings.

At the bottom of the linker script you'll notice a set of SECTION specifiers like this:

SECTION    NAME=PROG       ROM=page            // ROM code space
SECTION    NAME=IDLOCS     ROM=.idlocs         // ID locations
SECTION    NAME=DEVICEID   ROM=.device_id      // Device ID
SECTION    NAME=DEEPROM    ROM=eedata          // Data EEPROM


Add your own section names here and the destination RAM bank.

SECTION    NAME=SomeSection RAM=gpr0
SECTION    NAME=SomeOtherSection RAM=gpr2


You can verify in the map output file that your variables have been placed in the correct location.  From the example above, registers1-4 go into gpr0, register5 goes into gpr2.