platmcpm.c (9938b04472d5c59f8bd8152a548533a8599596a2) platmcpm.c (64fc2a947a9873700929ec0ef02b4654a04e0476)
1/*
2 * Copyright (c) 2013-2014 Linaro Ltd.
3 * Copyright (c) 2013-2014 Hisilicon Limited.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 */

--- 313 unchanged lines hidden (view full) ---

322 }
323
324 /*
325 * Fill the instruction address that is used after secondary core
326 * out of reset.
327 */
328 writel_relaxed(hip04_boot_method[0], relocation);
329 writel_relaxed(0xa5a5a5a5, relocation + 4); /* magic number */
1/*
2 * Copyright (c) 2013-2014 Linaro Ltd.
3 * Copyright (c) 2013-2014 Hisilicon Limited.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
8 */

--- 313 unchanged lines hidden (view full) ---

322 }
323
324 /*
325 * Fill the instruction address that is used after secondary core
326 * out of reset.
327 */
328 writel_relaxed(hip04_boot_method[0], relocation);
329 writel_relaxed(0xa5a5a5a5, relocation + 4); /* magic number */
330 writel_relaxed(virt_to_phys(secondary_startup), relocation + 8);
330 writel_relaxed(__pa_symbol(secondary_startup), relocation + 8);
331 writel_relaxed(0, relocation + 12);
332 iounmap(relocation);
333
334 smp_set_ops(&hip04_smp_ops);
335 return ret;
336err_table:
337 iounmap(fabric);
338err_fabric:
339 iounmap(sysctrl);
340err_sysctrl:
341 iounmap(relocation);
342err_reloc:
343 memblock_free(hip04_boot_method[0], hip04_boot_method[1]);
344err:
345 return ret;
346}
347early_initcall(hip04_smp_init);
331 writel_relaxed(0, relocation + 12);
332 iounmap(relocation);
333
334 smp_set_ops(&hip04_smp_ops);
335 return ret;
336err_table:
337 iounmap(fabric);
338err_fabric:
339 iounmap(sysctrl);
340err_sysctrl:
341 iounmap(relocation);
342err_reloc:
343 memblock_free(hip04_boot_method[0], hip04_boot_method[1]);
344err:
345 return ret;
346}
347early_initcall(hip04_smp_init);