This looks like a GOT load. The address pc+440 is the address of the pointer to the global. What does pc+440 point to?
PS If you reference a global you were not compiled with, but linked with it becomes an indirect access.
this is clang, but you get the idea (I used armv6 as armv7 emits movw/movt). The linker would patch L_global$non_lazy_ptr with a pointer to the global at link time.
~/work/Compiler>cat got.c
extern int global;
int test()
{
return global;
}
~/work/Compiler>clang -arch armv6 -Os -S got.c
~/work/Compiler>cat got.S
.section __TEXT,__text,regular,pure_instructions
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
.section __TEXT,__const_coal,coalesced
.section __TEXT,__picsymbolstub4,symbol_stubs,none,16
.section __TEXT,__StaticInit,regular,pure_instructions
.section __TEXT,__cstring,cstring_literals
.syntax unified
.section __TEXT,__text,regular,pure_instructions
.globl _test
.align 2
_test: @ @test
@ BB#0:
ldr r0, LCPI0_0
LPC0_0:
ldr r0, [pc, r0]
ldr r0, [r0]
bx lr
.align 2
@ BB#1:
.data_region
LCPI0_0:
.long L_global$non_lazy_ptr-(LPC0_0+8)
.end_data_region
.section __DATA,__nl_symbol_ptr,non_lazy_symbol_pointers
.align 2
L_global$non_lazy_ptr:
.indirect_symbol _global
.long 0
.subsections_via_symbols