• Li Zhong's avatar
    powerpc: use _GLOBAL_TOC for memmove · 6f5405bc
    Li Zhong authored
    memmove may be called from module code copy_pages(btrfs), and it may
    call memcpy, which may call back to C code, so it needs to use
    _GLOBAL_TOC to set up r2 correctly.
    
    This fixes following error when I tried to boot an le guest:
    
    Vector: 300 (Data Access) at [c000000073f97210]
        pc: c000000000015004: enable_kernel_altivec+0x24/0x80
        lr: c000000000058fbc: enter_vmx_copy+0x3c/0x60
        sp: c000000073f97490
       msr: 8000000002009033
       dar: d000000001d50170
     dsisr: 40000000
      current = 0xc0000000734c0000
      paca    = 0xc00000000fff0000	 softe: 0	 irq_happened: 0x01
        pid   = 815, comm = mktemp
    enter ? for help
    [c000000073f974f0] c000000000058fbc enter_vmx_copy+0x3c/0x60
    [c000000073f97510] c000000000057d34 memcpy_power7+0x274/0x840
    [c000000073f97610] d000000001c3179c copy_pages+0xfc/0x110 [btrfs]
    [c000000073f97660] d000000001c3c248 memcpy_extent_buffer+0xe8/0x160 [btrfs]
    [c000000073f97700] d000000001be4be8 setup_items_for_insert+0x208/0x4a0 [btrfs]
    [c000000073f97820] d000000001be50b4 btrfs_insert_empty_items+0xf4/0x140 [btrfs]
    [c000000073f97890] d000000001bfed30 insert_with_overflow+0x70/0x180 [btrfs]
    [c000000073f97900] d000000001bff174 btrfs_insert_dir_item+0x114/0x2f0 [btrfs]
    [c000000073f979a0] d000000001c1f92c btrfs_add_link+0x10c/0x370 [btrfs]
    [c000000073f97a40] d000000001c20e94 btrfs_create+0x204/0x270 [btrfs]
    [c000000073f97b00] c00000000026d438 vfs_create+0x178/0x210
    [c000000073f97b50] c000000000270a70 do_last+0x9f0/0xe90
    [c000000073f97c20] c000000000271010 path_openat+0x100/0x810
    [c000000073f97ce0] c000000000272ea8 do_filp_open+0x58/0xd0
    [c000000073f97dc0] c00000000025ade8 do_sys_open+0x1b8/0x300
    [c000000073f97e30] c00000000000a008 syscall_exit+0x0/0x7c
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    6f5405bc
mem_64.S 1.93 KB