summaryrefslogtreecommitdiff
path: root/arch/powerpc/cpu
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/cpu')
-rw-r--r--arch/powerpc/cpu/mpc85xx/cpu.c4
-rw-r--r--arch/powerpc/cpu/mpc85xx/resetvec.S2
-rw-r--r--arch/powerpc/cpu/mpc85xx/start.S13
-rw-r--r--arch/powerpc/cpu/mpc85xx/u-boot-nand.lds97
-rw-r--r--arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds68
-rw-r--r--arch/powerpc/cpu/mpc85xx/u-boot-spl.lds20
-rw-r--r--arch/powerpc/cpu/mpc85xx/u-boot.lds27
7 files changed, 30 insertions, 201 deletions
diff --git a/arch/powerpc/cpu/mpc85xx/cpu.c b/arch/powerpc/cpu/mpc85xx/cpu.c
index cc1d02df811..a82516a75bd 100644
--- a/arch/powerpc/cpu/mpc85xx/cpu.c
+++ b/arch/powerpc/cpu/mpc85xx/cpu.c
@@ -143,8 +143,10 @@ int checkcpu (void)
printf("Core: ");
switch(ver) {
case PVR_VER_E500_V1:
+ puts("e500v1");
+ break;
case PVR_VER_E500_V2:
- puts("e500");
+ puts("e500v2");
break;
case PVR_VER_E500MC:
puts("e500mc");
diff --git a/arch/powerpc/cpu/mpc85xx/resetvec.S b/arch/powerpc/cpu/mpc85xx/resetvec.S
index 29555d4a009..9a552f6624e 100644
--- a/arch/powerpc/cpu/mpc85xx/resetvec.S
+++ b/arch/powerpc/cpu/mpc85xx/resetvec.S
@@ -1,2 +1,2 @@
.section .resetvec,"ax"
- b _start_e500
+ b _start
diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S
index 9ddd3711190..2b2ad973599 100644
--- a/arch/powerpc/cpu/mpc85xx/start.S
+++ b/arch/powerpc/cpu/mpc85xx/start.S
@@ -46,7 +46,6 @@
GOT_ENTRY(_FIXUP_TABLE_)
#ifndef MINIMAL_SPL
- GOT_ENTRY(_start)
GOT_ENTRY(_start_of_vectors)
GOT_ENTRY(_end_of_vectors)
GOT_ENTRY(transfer_to_handler)
@@ -71,9 +70,9 @@
*/
.section .bootpg,"ax"
- .globl _start_e500
+ .globl _start
-_start_e500:
+_start:
/* Enable debug exception */
li r1,MSR_DE
mtmsr r1
@@ -1128,16 +1127,12 @@ switch_as:
/*--------------------------------------------------------------*/
lis r3,CONFIG_VAL(SYS_MONITOR_BASE)@h
ori r3,r3,CONFIG_VAL(SYS_MONITOR_BASE)@l
- addi r3,r3,_start_cont - _start
+ addi r3,r3,_start_cont - _start_cont
mtlr r3
blr
#endif
.text
- .globl _start
-_start:
- .long 0x27051956 /* U-BOOT Magic Number */
-
.globl _start_cont
_start_cont:
/* Setup the stack in initial RAM,could be L2-as-SRAM or L1 dcache*/
@@ -1604,7 +1599,7 @@ relocate_code:
* initialization, now running from RAM.
*/
- addi r0,r10,in_ram - _start
+ addi r0,r10,in_ram - _start_cont
/*
* As IVPR is going to point RAM address,
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
deleted file mode 100644
index 75b0285e4e5..00000000000
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand.lds
+++ /dev/null
@@ -1,97 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright 2009-2012 Freescale Semiconductor, Inc.
- */
-
-#include "config.h"
-
-#ifndef CONFIG_SYS_MONITOR_LEN
-#define CONFIG_SYS_MONITOR_LEN 0x80000
-#endif
-
-OUTPUT_ARCH(powerpc)
-/* Do we need any of these for elf?
- __DYNAMIC = 0; */
-PHDRS
-{
- text PT_LOAD;
- bss PT_LOAD;
-}
-
-SECTIONS
-{
- /* Read-only sections, merged into text segment: */
- . = + SIZEOF_HEADERS;
- .interp : { *(.interp) }
- .text :
- {
- *(.text*)
- } :text
- _etext = .;
- PROVIDE (etext = .);
- .rodata :
- {
- *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
- } :text
-
- /* Read-write section, merged into data segment: */
- . = (. + 0x00FF) & 0xFFFFFF00;
- _erotext = .;
- PROVIDE (erotext = .);
- .reloc :
- {
- _GOT2_TABLE_ = .;
- KEEP(*(.got2))
- KEEP(*(.got))
- _FIXUP_TABLE_ = .;
- KEEP(*(.fixup))
- }
- __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
- __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
-
- .data :
- {
- *(.data*)
- *(.sdata*)
- }
- _edata = .;
- PROVIDE (edata = .);
-
- . = .;
-
- .u_boot_list : {
- KEEP(*(SORT(.u_boot_list*)));
- }
-
- . = .;
- __start___ex_table = .;
- __ex_table : { *(__ex_table) }
- __stop___ex_table = .;
-
- . = ALIGN(256);
- __init_begin = .;
- .text.init : { *(.text.init) }
- .data.init : { *(.data.init) }
- . = ALIGN(256);
- __init_end = .;
- _end = .;
-
- .bootpg ADDR(.text) - 0x1000 :
- {
- KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
- } :text = 0xffff
-
- . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
-
- __bss_start = .;
- .bss (NOLOAD) :
- {
- *(.sbss*)
- *(.bss*)
- *(COMMON)
- } :bss
-
- . = ALIGN(4);
- __bss_end = . ;
- PROVIDE (end = .);
-}
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
deleted file mode 100644
index a2193bf7680..00000000000
--- a/arch/powerpc/cpu/mpc85xx/u-boot-nand_spl.lds
+++ /dev/null
@@ -1,68 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * (C) Copyright 2006
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de
- *
- * Copyright 2009 Freescale Semiconductor, Inc.
- */
-
-#include "config.h"
-
-OUTPUT_ARCH(powerpc)
-SECTIONS
-{
- . = 0xfff00000;
- .text : {
- *(.text*)
- }
- _etext = .;
-
- .reloc : {
- _GOT2_TABLE_ = .;
- KEEP(*(.got2))
- KEEP(*(.got))
- _FIXUP_TABLE_ = .;
- KEEP(*(.fixup))
- }
- __got2_entries = ((_GLOBAL_OFFSET_TABLE_ - _GOT2_TABLE_) >> 2) - 1;
- __fixup_entries = (. - _FIXUP_TABLE_) >> 2;
-
- . = ALIGN(8);
- .data : {
- *(.rodata*)
- *(.data*)
- *(.sdata*)
- }
- _edata = .;
-
- .u_boot_list : {
- KEEP(*(SORT(.u_boot_list*)));
- }
-
- . = ALIGN(8);
- __init_begin = .;
- __init_end = .;
- _end = .;
-#if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */
- .bootpg ADDR(.text) + 0x1000 :
- {
- start.o (.bootpg)
- }
-#define RESET_VECTOR_OFFSET 0x1ffc /* IFC has 8K sram */
-#elif defined(CONFIG_FSL_ELBC)
-#define RESET_VECTOR_OFFSET 0xffc /* LBC has 4k sram */
-#else
-#error unknown NAND controller
-#endif
- .resetvec ADDR(.text) + RESET_VECTOR_OFFSET : {
- KEEP(*(.resetvec))
- } = 0xffff
-
- __bss_start = .;
- .bss : {
- *(.sbss*)
- *(.bss*)
- }
- __bss_end = .;
-}
-ASSERT(__init_end <= (0xfff00000 + RESET_VECTOR_OFFSET), "NAND bootstrap too big");
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
index 27a5fe6306a..1b4d1e05a4a 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot-spl.lds
@@ -18,6 +18,13 @@ PHDRS
#endif
SECTIONS
{
+/* For ifc, elbc, esdhc, espi, all need the SPL without section .resetvec */
+#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
+ .bootpg IMAGE_TEXT_BASE - 0x1000 :
+ {
+ KEEP(*(.bootpg))
+ } :text = 0xffff
+#endif
. = IMAGE_TEXT_BASE;
.text : {
*(.text*)
@@ -67,18 +74,13 @@ SECTIONS
__bss_end = .;
#endif
-/* For ifc, elbc, esdhc, espi, all need the SPL without section .resetvec */
-#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
- .bootpg ADDR(.text) - 0x1000 :
- {
- KEEP(*(.bootpg))
- } :text = 0xffff
-#else
+/* For nor and nand is needed the SPL with section .resetvec */
+#ifndef CONFIG_SYS_MPC85XX_NO_RESETVEC
#if defined(CONFIG_FSL_IFC) /* Restrict bootpg at 4K boundry for IFC */
#ifndef BOOT_PAGE_OFFSET
#define BOOT_PAGE_OFFSET 0x1000
#endif
- .bootpg ADDR(.text) + BOOT_PAGE_OFFSET :
+ .bootpg IMAGE_TEXT_BASE + BOOT_PAGE_OFFSET :
{
arch/powerpc/cpu/mpc85xx/start.o (.bootpg)
}
@@ -90,7 +92,7 @@ SECTIONS
#else
#error unknown NAND controller
#endif
- .resetvec ADDR(.text) + RESET_VECTOR_OFFSET : {
+ .resetvec IMAGE_TEXT_BASE + RESET_VECTOR_OFFSET : {
KEEP(*(.resetvec))
} = 0xffff
#endif
diff --git a/arch/powerpc/cpu/mpc85xx/u-boot.lds b/arch/powerpc/cpu/mpc85xx/u-boot.lds
index 22bbac51aa3..e1bbee43bcb 100644
--- a/arch/powerpc/cpu/mpc85xx/u-boot.lds
+++ b/arch/powerpc/cpu/mpc85xx/u-boot.lds
@@ -11,12 +11,8 @@
#define RESET_VECTOR_ADDRESS 0xfffffffc
#endif
-#ifndef CONFIG_SYS_MONITOR_LEN
-#define CONFIG_SYS_MONITOR_LEN 0x80000
-#endif
-
OUTPUT_ARCH(powerpc)
-ENTRY(_start_e500)
+ENTRY(_start)
PHDRS
{
@@ -27,8 +23,13 @@ PHDRS
SECTIONS
{
/* Read-only sections, merged into text segment: */
- . = + SIZEOF_HEADERS;
- .interp : { *(.interp) }
+#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
+ .bootpg CONFIG_SYS_TEXT_BASE - 0x1000 :
+ {
+ KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
+ } :text = 0xffff
+ . = CONFIG_SYS_TEXT_BASE;
+#endif
.text :
{
*(.text*)
@@ -75,21 +76,15 @@ SECTIONS
__ex_table : { *(__ex_table) }
__stop___ex_table = .;
- . = ALIGN(256);
+ . = ALIGN(4);
__init_begin = .;
.text.init : { *(.text.init) }
.data.init : { *(.data.init) }
- . = ALIGN(256);
+ . = ALIGN(4);
__init_end = .;
_end = .;
-#ifdef CONFIG_SYS_MPC85XX_NO_RESETVEC
- .bootpg ADDR(.text) - 0x1000 :
- {
- KEEP(arch/powerpc/cpu/mpc85xx/start.o (.bootpg))
- } :text = 0xffff
- . = ADDR(.text) + CONFIG_SYS_MONITOR_LEN;
-#else
+#ifndef CONFIG_SYS_MPC85XX_NO_RESETVEC
.bootpg RESET_VECTOR_ADDRESS - 0xffc :
{
arch/powerpc/cpu/mpc85xx/start.o (.bootpg)