Merge branch 'master' of git://git.denx.de/u-boot-arm

This commit is contained in:
Wolfgang Denk 2011-03-27 21:20:29 +02:00
commit c04bf5e9a4
259 changed files with 680 additions and 329 deletions

View File

@ -102,6 +102,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -72,11 +72,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -121,6 +121,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
/* IRQ stack memory (calculated at run-time) + 8 bytes */
@ -352,9 +356,11 @@ clbss_l:str r2, [r0] /* clear loop... */
cmp r0, r1
bne clbss_l
#ifndef CONFIG_NAND_SPL
bl coloured_LED_init
bl red_LED_on
#endif
#endif
/*
* We are done. Do not return, instead branch to second part of board

View File

@ -61,11 +61,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -91,6 +91,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -62,11 +62,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -55,5 +55,7 @@ SECTIONS
. = ALIGN(4);
__bss_start = .;
.bss : { *(.bss) }
__bss_end__ = .;
_end = .;
}

View File

@ -87,6 +87,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -71,11 +71,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -97,6 +97,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -66,11 +66,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -131,6 +131,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -103,6 +103,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -99,6 +99,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -27,6 +27,7 @@ LIB = $(obj)libs5p-common.o
COBJS-y += cpu_info.o
COBJS-y += timer.o
COBJS-$(CONFIG_PWM) += pwm.o
SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
OBJS := $(addprefix $(obj),$(COBJS-y) $(SOBJS))

View File

@ -0,0 +1,189 @@
/*
* Copyright (C) 2011 Samsung Electronics
*
* Donghwa Lee <dh09.lee@samsung.com>
*
* See file CREDITS for list of people who contributed to this
* project.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
#include <common.h>
#include <errno.h>
#include <pwm.h>
#include <asm/io.h>
#include <asm/arch/pwm.h>
#include <asm/arch/clk.h>
int pwm_enable(int pwm_id)
{
const struct s5p_timer *pwm =
(struct s5p_timer *)samsung_get_base_timer();
unsigned long tcon;
tcon = readl(&pwm->tcon);
tcon |= TCON_START(pwm_id);
writel(tcon, &pwm->tcon);
return 0;
}
void pwm_disable(int pwm_id)
{
const struct s5p_timer *pwm =
(struct s5p_timer *)samsung_get_base_timer();
unsigned long tcon;
tcon = readl(&pwm->tcon);
tcon &= ~TCON_START(pwm_id);
writel(tcon, &pwm->tcon);
}
static unsigned long pwm_calc_tin(int pwm_id, unsigned long freq)
{
unsigned long tin_parent_rate;
unsigned int div;
tin_parent_rate = get_pwm_clk();
for (div = 2; div <= 16; div *= 2) {
if ((tin_parent_rate / (div << 16)) < freq)
return tin_parent_rate / div;
}
return tin_parent_rate / 16;
}
#define NS_IN_HZ (1000000000UL)
int pwm_config(int pwm_id, int duty_ns, int period_ns)
{
const struct s5p_timer *pwm =
(struct s5p_timer *)samsung_get_base_timer();
unsigned int offset;
unsigned long tin_rate;
unsigned long tin_ns;
unsigned long period;
unsigned long tcon;
unsigned long tcnt;
unsigned long timer_rate_hz;
unsigned long tcmp;
/*
* We currently avoid using 64bit arithmetic by using the
* fact that anything faster than 1GHz is easily representable
* by 32bits.
*/
if (period_ns > NS_IN_HZ || duty_ns > NS_IN_HZ)
return -ERANGE;
if (duty_ns > period_ns)
return -EINVAL;
period = NS_IN_HZ / period_ns;
/* Check to see if we are changing the clock rate of the PWM */
tin_rate = pwm_calc_tin(pwm_id, period);
timer_rate_hz = tin_rate;
tin_ns = NS_IN_HZ / tin_rate;
tcnt = period_ns / tin_ns;
/* Note, counters count down */
tcmp = duty_ns / tin_ns;
tcmp = tcnt - tcmp;
/*
* the pwm hw only checks the compare register after a decrement,
* so the pin never toggles if tcmp = tcnt
*/
if (tcmp == tcnt)
tcmp--;
if (tcmp < 0)
tcmp = 0;
/* Update the PWM register block. */
offset = pwm_id * 3;
if (pwm_id < 4) {
writel(tcnt, &pwm->tcntb0 + offset);
writel(tcmp, &pwm->tcmpb0 + offset);
}
tcon = readl(&pwm->tcon);
tcon |= TCON_UPDATE(pwm_id);
if (pwm_id < 4)
tcon |= TCON_AUTO_RELOAD(pwm_id);
else
tcon |= TCON4_AUTO_RELOAD;
writel(tcon, &pwm->tcon);
tcon &= ~TCON_UPDATE(pwm_id);
writel(tcon, &pwm->tcon);
return 0;
}
int pwm_init(int pwm_id, int div, int invert)
{
u32 val;
const struct s5p_timer *pwm =
(struct s5p_timer *)samsung_get_base_timer();
unsigned long timer_rate_hz;
unsigned int offset, prescaler;
/*
* Timer Freq(HZ) =
* PWM_CLK / { (prescaler_value + 1) * (divider_value) }
*/
val = readl(&pwm->tcfg0);
if (pwm_id < 2) {
prescaler = PRESCALER_0;
val &= ~0xff;
val |= (prescaler & 0xff);
} else {
prescaler = PRESCALER_1;
val &= ~(0xff << 8);
val |= (prescaler & 0xff) << 8;
}
writel(val, &pwm->tcfg0);
val = readl(&pwm->tcfg1);
val &= ~(0xf << MUX_DIV_SHIFT(pwm_id));
val |= (div & 0xf) << MUX_DIV_SHIFT(pwm_id);
writel(val, &pwm->tcfg1);
timer_rate_hz = get_pwm_clk() / ((prescaler + 1) *
(div + 1));
timer_rate_hz = timer_rate_hz / 100;
/* set count value */
offset = pwm_id * 3;
writel(timer_rate_hz, &pwm->tcntb0 + offset);
val = readl(&pwm->tcon) & ~(0xf << TCON_OFFSET(pwm_id));
if (invert && (pwm_id < 4))
val |= TCON_INVERTER(pwm_id);
writel(val, &pwm->tcon);
pwm_enable(pwm_id);
return 0;
}

View File

@ -27,21 +27,9 @@
#include <asm/io.h>
#include <asm/arch/pwm.h>
#include <asm/arch/clk.h>
#include <pwm.h>
#define PRESCALER_1 (16 - 1) /* prescaler of timer 2, 3, 4 */
#define MUX_DIV_2 1 /* 1/2 period */
#define MUX_DIV_4 2 /* 1/4 period */
#define MUX_DIV_8 3 /* 1/8 period */
#define MUX_DIV_16 4 /* 1/16 period */
#define MUX4_DIV_SHIFT 16
#define TCON_TIMER4_SHIFT 20
static unsigned long count_value;
/* Internal tick units */
static unsigned long long timestamp; /* Monotonic incrementing timer */
static unsigned long lastdec; /* Last decremneter snapshot */
DECLARE_GLOBAL_DATA_PTR;
/* macro to read the 16 bit timer */
static inline struct s5p_timer *s5p_get_base_timer(void)
@ -51,41 +39,10 @@ static inline struct s5p_timer *s5p_get_base_timer(void)
int timer_init(void)
{
struct s5p_timer *const timer = s5p_get_base_timer();
u32 val;
/*
* @ PWM Timer 4
* Timer Freq(HZ) =
* PWM_CLK / { (prescaler_value + 1) * (divider_value) }
*/
/* set prescaler : 16 */
/* set divider : 2 */
writel((PRESCALER_1 & 0xff) << 8, &timer->tcfg0);
writel((MUX_DIV_2 & 0xf) << MUX4_DIV_SHIFT, &timer->tcfg1);
/* count_value = 2085937.5(HZ) (per 1 sec)*/
count_value = get_pwm_clk() / ((PRESCALER_1 + 1) *
(MUX_DIV_2 + 1));
/* count_value / 100 = 20859.375(HZ) (per 10 msec) */
count_value = count_value / 100;
/* set count value */
writel(count_value, &timer->tcntb4);
lastdec = count_value;
val = (readl(&timer->tcon) & ~(0x07 << TCON_TIMER4_SHIFT)) |
TCON4_AUTO_RELOAD;
/* auto reload & manual update */
writel(val | TCON4_UPDATE, &timer->tcon);
/* start PWM timer 4 */
writel(val | TCON4_START, &timer->tcon);
timestamp = 0;
/* PWM Timer 4 */
pwm_init(4, MUX_DIV_2, 0);
pwm_config(4, 0, 0);
pwm_enable(4);
return 0;
}
@ -105,14 +62,14 @@ unsigned long get_timer(unsigned long base)
void set_timer(unsigned long t)
{
timestamp = t;
gd->tbl = t;
}
/* delay x useconds */
void __udelay(unsigned long usec)
{
struct s5p_timer *const timer = s5p_get_base_timer();
unsigned long tmo, tmp;
unsigned long tmo, tmp, count_value;
count_value = readl(&timer->tcntb4);
@ -137,7 +94,7 @@ void __udelay(unsigned long usec)
tmp = get_timer(0);
/* if setting this fordward will roll time stamp */
/* reset "advancing" timestamp to 0, set lastdec value */
/* reset "advancing" timestamp to 0, set lastinc value */
/* else, set advancing stamp wake up time */
if ((tmo + tmp + 1) < tmp)
reset_timer_masked();
@ -154,23 +111,24 @@ void reset_timer_masked(void)
struct s5p_timer *const timer = s5p_get_base_timer();
/* reset time */
lastdec = readl(&timer->tcnto4);
timestamp = 0;
gd->lastinc = readl(&timer->tcnto4);
gd->tbl = 0;
}
unsigned long get_timer_masked(void)
{
struct s5p_timer *const timer = s5p_get_base_timer();
unsigned long now = readl(&timer->tcnto4);
unsigned long count_value = readl(&timer->tcntb4);
if (lastdec >= now)
timestamp += lastdec - now;
if (gd->lastinc >= now)
gd->tbl += gd->lastinc - now;
else
timestamp += lastdec + count_value - now;
gd->tbl += gd->lastinc + count_value - now;
lastdec = now;
gd->lastinc = now;
return timestamp;
return gd->tbl;
}
/*

View File

@ -79,6 +79,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -66,11 +66,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -110,6 +110,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -87,6 +87,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -104,6 +104,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -78,6 +78,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -63,11 +63,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -88,6 +88,10 @@ _bss_start_ofs:
.globl _bss_end_ofs
_bss_end_ofs:
.word __bss_end__ - _start
.globl _end_ofs
_end_ofs:
.word _end - _start
#ifdef CONFIG_USE_IRQ

View File

@ -66,11 +66,13 @@ SECTIONS
*(.dynsym)
}
_end = .;
.bss __rel_dyn_start (OVERLAY) : {
__bss_start = .;
*(.bss)
. = ALIGN(4);
_end = .;
__bss_end__ = .;
}
/DISCARD/ : { *(.dynstr*) }

View File

@ -53,10 +53,11 @@ struct s5p_mmc {
unsigned char res3[0x34];
unsigned int control2;
unsigned int control3;
unsigned char res4[4];
unsigned int control4;
unsigned char res4[0x6e];
unsigned char res5[0x6e];
unsigned short hcver;
unsigned char res5[0xFFF02];
unsigned char res6[0xFFF00];
};
struct mmc_host {

View File

@ -22,12 +22,25 @@
#ifndef __ASM_ARM_ARCH_PWM_H_
#define __ASM_ARM_ARCH_PWM_H_
/* Interval mode(Auto Reload) of PWM Timer 4 */
#define PRESCALER_0 (8 - 1) /* prescaler of timer 0, 1 */
#define PRESCALER_1 (16 - 1) /* prescaler of timer 2, 3, 4 */
/* Divider MUX */
#define MUX_DIV_1 0 /* 1/1 period */
#define MUX_DIV_2 1 /* 1/2 period */
#define MUX_DIV_4 2 /* 1/4 period */
#define MUX_DIV_8 3 /* 1/8 period */
#define MUX_DIV_16 4 /* 1/16 period */
#define MUX_DIV_SHIFT(x) (x * 4)
#define TCON_OFFSET(x) ((x + 1) * (!!x) << 2)
#define TCON_START(x) (1 << TCON_OFFSET(x))
#define TCON_UPDATE(x) (1 << (TCON_OFFSET(x) + 1))
#define TCON_INVERTER(x) (1 << (TCON_OFFSET(x) + 2))
#define TCON_AUTO_RELOAD(x) (1 << (TCON_OFFSET(x) + 3))
#define TCON4_AUTO_RELOAD (1 << 22)
/* Update TCNTB4 */
#define TCON4_UPDATE (1 << 21)
/* start bit of PWM Timer 4 */
#define TCON4_START (1 << 20)
#ifndef __ASSEMBLY__
struct s5p_timer {

View File

@ -53,10 +53,11 @@ struct s5p_mmc {
unsigned char res3[0x34];
unsigned int control2;
unsigned int control3;
unsigned char res4[4];
unsigned int control4;
unsigned char res4[0x6e];
unsigned char res5[0x6e];
unsigned short hcver;
unsigned char res5[0xFF02];
unsigned char res6[0xFF00];
};
struct mmc_host {

View File

@ -22,12 +22,25 @@
#ifndef __ASM_ARM_ARCH_PWM_H_
#define __ASM_ARM_ARCH_PWM_H_
/* Interval mode(Auto Reload) of PWM Timer 4 */
#define PRESCALER_0 (8 - 1) /* prescaler of timer 0, 1 */
#define PRESCALER_1 (16 - 1) /* prescaler of timer 2, 3, 4 */
/* Divider MUX */
#define MUX_DIV_1 0 /* 1/1 period */
#define MUX_DIV_2 1 /* 1/2 period */
#define MUX_DIV_4 2 /* 1/4 period */
#define MUX_DIV_8 3 /* 1/8 period */
#define MUX_DIV_16 4 /* 1/16 period */
#define MUX_DIV_SHIFT(x) (x * 4)
#define TCON_OFFSET(x) ((x + 1) * (!!x) << 2)
#define TCON_START(x) (1 << TCON_OFFSET(x))
#define TCON_UPDATE(x) (1 << (TCON_OFFSET(x) + 1))
#define TCON_INVERTER(x) (1 << (TCON_OFFSET(x) + 2))
#define TCON_AUTO_RELOAD(x) (1 << (TCON_OFFSET(x) + 3))
#define TCON4_AUTO_RELOAD (1 << 22)
/* Update TCNTB4 */
#define TCON4_UPDATE (1 << 21)
/* start bit of PWM Timer 4 */
#define TCON4_START (1 << 20)
#ifndef __ASSEMBLY__
struct s5p_timer {

View File

@ -32,6 +32,7 @@
/* for the following variables, see start.S */
extern ulong _bss_start_ofs; /* BSS start relative to _start */
extern ulong _bss_end_ofs; /* BSS end relative to _start */
extern ulong _end_ofs; /* end of image relative to _start */
extern ulong IRQ_STACK_START; /* top of IRQ stack */
extern ulong FIQ_STACK_START; /* top of FIQ stack */
extern ulong _TEXT_BASE; /* code start */

View File

@ -459,7 +459,7 @@ void board_init_r (gd_t *id, ulong dest_addr)
gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
monitor_flash_len = _bss_start_ofs;
monitor_flash_len = _end_ofs;
debug ("monitor flash len: %08lX\n", monitor_flash_len);
board_init(); /* Setup chipselects */

View File

@ -244,7 +244,7 @@ relocate_code:
/* zero out .bss */
mov r0, 0
mov r1, 0
lda.w r9, _end
lda.w r9, __bss_end__
sub r9, r8
1: st.d r10++, r0
sub r9, 8

View File

@ -27,6 +27,6 @@
extern char _text[], _etext[];
extern char _data[], __data_lma[], _edata[], __edata_lma[];
extern char __got_start[], __got_lma[], __got_end[];
extern char _end[];
extern char __bss_end__[];
#endif /* __ASM_AVR32_SECTIONS_H */

View File

@ -118,7 +118,7 @@ static int display_banner (void)
printf ("\n\n%s\n\n", version_string);
printf ("U-Boot code: %08lx -> %08lx data: %08lx -> %08lx\n",
(unsigned long)_text, (unsigned long)_etext,
(unsigned long)_data, (unsigned long)_end);
(unsigned long)_data, (unsigned long)__bss_end__);
return 0;
}
@ -190,7 +190,7 @@ void board_init_f(ulong board_type)
* - stack
*/
addr = CONFIG_SYS_SDRAM_BASE + sdram_size;
monitor_len = _end - _text;
monitor_len = __bss_end__ - _text;
/*
* Reserve memory for u-boot code, data and bss.

View File

@ -76,7 +76,7 @@ static char *failed = "*** failed ***\n";
#include <environment.h>
extern ulong __init_end;
extern ulong _end;
extern ulong __bss_end__;
extern void timer_init(void);
@ -252,7 +252,7 @@ board_init_f (ulong bootflag)
* - monitor code
* - board info struct
*/
len = (ulong)&_end - CONFIG_SYS_MONITOR_BASE;
len = (ulong)&__bss_end__ - CONFIG_SYS_MONITOR_BASE;
addr = CONFIG_SYS_SDRAM_BASE + gd->ram_size;

View File

@ -100,12 +100,12 @@ _cur: movhi r5, %hi(_cur - _start)
3:
/* ZERO BSS/SBSS -- bss and sbss are assumed to be adjacent
* and between __bss_start and _end.
* and between __bss_start and __bss_end__.
*/
movhi r5, %hi(__bss_start)
ori r5, r5, %lo(__bss_start)
movhi r6, %hi(_end)
ori r6, r6, %lo(_end)
movhi r6, %hi(__bss_end__)
ori r6, r6, %lo(__bss_end__)
beq r5, r6, 5f
4: stwio r0, 0(r5)

View File

@ -103,7 +103,7 @@ SECTIONS
*(.scommon)
}
. = ALIGN(4);
_end = .;
__bss_end__ = .;
PROVIDE (end = .);
/* DEBUG -- symbol table, string table, etc. etc.

View File

@ -77,7 +77,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -722,7 +722,7 @@ in_ram:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -87,6 +87,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -79,7 +79,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -626,7 +626,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -82,7 +82,7 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}
ENTRY(_start)

View File

@ -70,7 +70,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -466,7 +466,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -91,7 +91,7 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
. = env_start;
.ppcenv :

View File

@ -70,7 +70,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -681,7 +681,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -91,6 +91,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -85,6 +85,6 @@ SECTIONS
*(.sbss*)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -69,7 +69,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -654,7 +654,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -84,6 +84,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -77,7 +77,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
#if defined(CONFIG_FADS)
GOT_ENTRY(environment)
@ -596,7 +596,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -85,6 +85,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -70,7 +70,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
#if defined(CONFIG_HYMOD)
GOT_ENTRY(environment)
@ -927,7 +927,7 @@ clear_bss:
*/
lwz r4,GOT(environment)
#else
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
#endif
cmplw 0, r3, r4

View File

@ -84,6 +84,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -72,7 +72,7 @@
START_GOT
GOT_ENTRY(_GOT2_TABLE_)
GOT_ENTRY(__bss_start)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
#ifndef CONFIG_NAND_SPL
GOT_ENTRY(_FIXUP_TABLE_)
@ -977,7 +977,7 @@ clear_bss:
*/
lwz r4,GOT(environment)
#else
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
#endif
cmplw 0, r3, r4

View File

@ -83,7 +83,7 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}
ENTRY(_start)

View File

@ -66,7 +66,7 @@
#endif
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -1050,7 +1050,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0,r3,r4
beq 6f

View File

@ -101,6 +101,6 @@ SECTIONS
} :bss
. = ALIGN(4);
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -62,6 +62,6 @@ SECTIONS
*(.sbss*)
*(.bss*)
}
_end = .;
__bss_end__ = .;
}
ASSERT(__init_end <= 0xfff00ffc, "NAND bootstrap too big");

View File

@ -125,6 +125,6 @@ SECTIONS
} :bss
. = ALIGN(4);
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -66,7 +66,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -740,7 +740,7 @@ in_ram:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -88,6 +88,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -77,7 +77,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
@ -597,7 +597,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 6f

View File

@ -248,7 +248,7 @@
GOT_ENTRY(transfer_to_handler)
GOT_ENTRY(__init_end)
GOT_ENTRY(_end)
GOT_ENTRY(__bss_end__)
GOT_ENTRY(__bss_start)
END_GOT
#endif /* CONFIG_NAND_SPL */
@ -1624,7 +1624,7 @@ clear_bss:
* Now clear BSS segment
*/
lwz r3,GOT(__bss_start)
lwz r4,GOT(_end)
lwz r4,GOT(__bss_end__)
cmplw 0, r3, r4
beq 7f

View File

@ -140,6 +140,6 @@ SECTIONS
} :bss
. = ALIGN(4);
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -123,7 +123,7 @@ DECLARE_GLOBAL_DATA_PTR;
#endif
extern ulong __init_end;
extern ulong _end;
extern ulong __bss_end__;
ulong monitor_flash_len;
#if defined(CONFIG_CMD_BEDBUG)
@ -403,7 +403,7 @@ void board_init_f (ulong bootflag)
* - monitor code
* - board info struct
*/
len = (ulong)&_end - CONFIG_SYS_MONITOR_BASE;
len = (ulong)&__bss_end__ - CONFIG_SYS_MONITOR_BASE;
/*
* Subtract specified amount of memory to hide so that it won't

View File

@ -91,5 +91,5 @@ SECTIONS
}
PROVIDE (bss_end = .);
PROVIDE (_end = .);
PROVIDE (__bss_end__ = .);
}

View File

@ -98,5 +98,5 @@ SECTIONS
}
PROVIDE (bss_end = .);
PROVIDE (_end = .);
PROVIDE (__bss_end__ = .);
}

View File

@ -95,5 +95,5 @@ SECTIONS
}
PROVIDE (bss_end = .);
PROVIDE (_end = .);
PROVIDE (__bss_end__ = .);
}

View File

@ -134,6 +134,6 @@ SECTIONS
. = ALIGN(4);
_ebss = .;
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -109,6 +109,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -134,6 +134,6 @@ SECTIONS
*(.bss)
*(COMMON)
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -90,6 +90,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -130,6 +130,6 @@ SECTIONS
*(.bss)
*(COMMON)
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -90,6 +90,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -130,6 +130,6 @@ SECTIONS
*(.bss)
*(COMMON)
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -90,6 +90,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -130,6 +130,6 @@ SECTIONS
*(.bss)
*(COMMON)
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -95,6 +95,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -66,5 +66,5 @@ SECTIONS
*(.bss)
. = ALIGN(4);
}
_end =.;
__bss_end__ =.;
}

View File

@ -71,5 +71,5 @@ SECTIONS
*(.bss)
. = ALIGN(4);
}
_end =.;
__bss_end__ =.;
}

View File

@ -71,5 +71,5 @@ SECTIONS
*(.bss)
. = ALIGN(4);
}
_end =.;
__bss_end__ =.;
}

View File

@ -86,7 +86,7 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}
ENTRY(_start)

View File

@ -104,7 +104,7 @@ SECTIONS
*(.scommon)
}
. = ALIGN(4);
_end = .;
__bss_end__ = .;
PROVIDE (end = .);
/* DEBUG -- symbol table, string table, etc. etc.

View File

@ -98,6 +98,6 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -99,6 +99,6 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -99,6 +99,6 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -98,6 +98,6 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -99,6 +99,6 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -90,6 +90,6 @@ SECTIONS
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -90,6 +90,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -137,6 +137,6 @@ SECTIONS
. = ALIGN(4);
_ebss = .;
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

View File

@ -68,5 +68,5 @@ SECTIONS
*(.bss.*)
}
. = ALIGN(8);
_end = .;
__bss_end__ = .;
}

View File

@ -68,5 +68,5 @@ SECTIONS
*(.bss.*)
}
. = ALIGN(8);
_end = .;
__bss_end__ = .;
}

View File

@ -98,6 +98,6 @@ SECTIONS
*(COMMON)
. = ALIGN(4);
}
_end = . ;
__bss_end__ = . ;
PROVIDE (end = .);
}

Some files were not shown because too many files have changed in this diff Show More