Merge branch 'master' of git://git.denx.de/u-boot-arm
This commit is contained in:
commit
c04bf5e9a4
@ -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
|
||||
|
@ -72,11 +72,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -61,11 +61,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -62,11 +62,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -55,5 +55,7 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
__bss_start = .;
|
||||
.bss : { *(.bss) }
|
||||
__bss_end__ = .;
|
||||
|
||||
_end = .;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -71,11 +71,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -66,11 +66,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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))
|
||||
|
189
arch/arm/cpu/armv7/s5p-common/pwm.c
Normal file
189
arch/arm/cpu/armv7/s5p-common/pwm.c
Normal 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;
|
||||
}
|
@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
@ -66,11 +66,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -63,11 +63,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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
|
||||
|
@ -66,11 +66,13 @@ SECTIONS
|
||||
*(.dynsym)
|
||||
}
|
||||
|
||||
_end = .;
|
||||
|
||||
.bss __rel_dyn_start (OVERLAY) : {
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
||||
/DISCARD/ : { *(.dynstr*) }
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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)
|
||||
|
@ -103,7 +103,7 @@ SECTIONS
|
||||
*(.scommon)
|
||||
}
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
PROVIDE (end = .);
|
||||
|
||||
/* DEBUG -- symbol table, string table, etc. etc.
|
||||
|
@ -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
|
||||
|
@ -87,6 +87,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -82,7 +82,7 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
ENTRY(_start)
|
||||
|
@ -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
|
||||
|
||||
|
@ -91,7 +91,7 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
. = env_start;
|
||||
.ppcenv :
|
||||
|
@ -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
|
||||
|
@ -91,6 +91,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -85,6 +85,6 @@ SECTIONS
|
||||
*(.sbss*)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -84,6 +84,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -85,6 +85,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -84,6 +84,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -83,7 +83,7 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
ENTRY(_start)
|
||||
|
@ -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
|
||||
|
@ -101,6 +101,6 @@ SECTIONS
|
||||
} :bss
|
||||
|
||||
. = ALIGN(4);
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -62,6 +62,6 @@ SECTIONS
|
||||
*(.sbss*)
|
||||
*(.bss*)
|
||||
}
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
ASSERT(__init_end <= 0xfff00ffc, "NAND bootstrap too big");
|
||||
|
@ -125,6 +125,6 @@ SECTIONS
|
||||
} :bss
|
||||
|
||||
. = ALIGN(4);
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -88,6 +88,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -140,6 +140,6 @@ SECTIONS
|
||||
} :bss
|
||||
|
||||
. = ALIGN(4);
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -91,5 +91,5 @@ SECTIONS
|
||||
}
|
||||
PROVIDE (bss_end = .);
|
||||
|
||||
PROVIDE (_end = .);
|
||||
PROVIDE (__bss_end__ = .);
|
||||
}
|
||||
|
@ -98,5 +98,5 @@ SECTIONS
|
||||
}
|
||||
PROVIDE (bss_end = .);
|
||||
|
||||
PROVIDE (_end = .);
|
||||
PROVIDE (__bss_end__ = .);
|
||||
}
|
||||
|
@ -95,5 +95,5 @@ SECTIONS
|
||||
}
|
||||
PROVIDE (bss_end = .);
|
||||
|
||||
PROVIDE (_end = .);
|
||||
PROVIDE (__bss_end__ = .);
|
||||
}
|
||||
|
@ -134,6 +134,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
_ebss = .;
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -109,6 +109,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -134,6 +134,6 @@ SECTIONS
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -90,6 +90,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -130,6 +130,6 @@ SECTIONS
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -90,6 +90,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -130,6 +130,6 @@ SECTIONS
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -90,6 +90,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -130,6 +130,6 @@ SECTIONS
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -95,6 +95,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -66,5 +66,5 @@ SECTIONS
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end =.;
|
||||
__bss_end__ =.;
|
||||
}
|
||||
|
@ -71,5 +71,5 @@ SECTIONS
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end =.;
|
||||
__bss_end__ =.;
|
||||
}
|
||||
|
@ -71,5 +71,5 @@ SECTIONS
|
||||
*(.bss)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end =.;
|
||||
__bss_end__ =.;
|
||||
}
|
||||
|
@ -86,7 +86,7 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
ENTRY(_start)
|
||||
|
@ -104,7 +104,7 @@ SECTIONS
|
||||
*(.scommon)
|
||||
}
|
||||
. = ALIGN(4);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
PROVIDE (end = .);
|
||||
|
||||
/* DEBUG -- symbol table, string table, etc. etc.
|
||||
|
@ -98,6 +98,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -99,6 +99,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -99,6 +99,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -98,6 +98,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -99,6 +99,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -90,6 +90,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
}
|
||||
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -90,6 +90,6 @@ SECTIONS
|
||||
*(COMMON)
|
||||
. = ALIGN(4);
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -137,6 +137,6 @@ SECTIONS
|
||||
. = ALIGN(4);
|
||||
_ebss = .;
|
||||
}
|
||||
_end = . ;
|
||||
__bss_end__ = . ;
|
||||
PROVIDE (end = .);
|
||||
}
|
||||
|
@ -68,5 +68,5 @@ SECTIONS
|
||||
*(.bss.*)
|
||||
}
|
||||
. = ALIGN(8);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
@ -68,5 +68,5 @@ SECTIONS
|
||||
*(.bss.*)
|
||||
}
|
||||
. = ALIGN(8);
|
||||
_end = .;
|
||||
__bss_end__ = .;
|
||||
}
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user