* [U-Boot] [RFC][PATCH 14/19] nand_fsl_nfc: get rid of local var
@ 2010-07-29 10:45 Heiko Schocher
2010-07-29 16:40 ` Scott Wood
0 siblings, 1 reply; 4+ messages in thread
From: Heiko Schocher @ 2010-07-29 10:45 UTC (permalink / raw)
To: u-boot
If we have -fPIC enabled, this var leads in one entry in the
GOT. The result of this is that the image size is > 0x800.
Signed-off-by: Heiko Schocher <hs@denx.de>
---
I tried to fix this in the u-boot.lds, but without success. If
somebody knows, how to fix this without this patch, it would be
great!
nand_spl/nand_boot_fsl_nfc.c | 14 ++++++++------
1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/nand_spl/nand_boot_fsl_nfc.c b/nand_spl/nand_boot_fsl_nfc.c
index 9720f6a..0543512 100644
--- a/nand_spl/nand_boot_fsl_nfc.c
+++ b/nand_spl/nand_boot_fsl_nfc.c
@@ -34,10 +34,9 @@
#include <asm/io.h>
#include <fsl_nfc.h>
-struct fsl_nfc_regs *nfc;
-
static void nfc_wait_ready(void)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
uint32_t tmp;
while (!(readw(&nfc->nand_flash_config2) & NFC_INT))
@@ -51,6 +50,7 @@ static void nfc_wait_ready(void)
void nfc_nand_init(void)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
#if defined(MXC_NFC_V1_1)
int ecc_per_page = CONFIG_SYS_NAND_PAGE_SIZE / 512;
int config1;
@@ -82,6 +82,7 @@ void nfc_nand_init(void)
static void nfc_nand_command(unsigned short command)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
writew(command, &nfc->flash_cmd);
writew(NFC_CMD, &nfc->nand_flash_config2);
nfc_wait_ready();
@@ -89,6 +90,7 @@ static void nfc_nand_command(unsigned short command)
static void nfc_nand_page_address(unsigned int page_address)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
unsigned int page_count;
writew(0x00, &nfc->flash_add);
@@ -122,6 +124,7 @@ static void nfc_nand_page_address(unsigned int page_address)
static void nfc_nand_data_output(void)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
int config1 = readw(&nfc->nand_flash_config1);
#ifdef NAND_MXC_2K_MULTI_CYCLE
int i;
@@ -150,11 +153,13 @@ static void nfc_nand_data_output(void)
static int nfc_nand_check_ecc(void)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
return readw(&nfc->ecc_status_result);
}
static int nfc_read_page(unsigned int page_address, unsigned char *buf)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
int i;
u32 *src;
u32 *dst;
@@ -186,6 +191,7 @@ static int nfc_read_page(unsigned int page_address, unsigned char *buf)
static int is_badblock(int pagenumber)
{
+ struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
int page = pagenumber;
u32 badblock;
u32 *src;
@@ -228,8 +234,6 @@ static int nand_load(unsigned int from, unsigned int size, unsigned char *buf)
unsigned int maxpages = CONFIG_SYS_NAND_SIZE /
CONFIG_SYS_NAND_PAGE_SIZE;
- nfc = (void *)NFC_BASE_ADDR;
-
nfc_nand_init();
/* Convert to page number */
@@ -279,8 +283,6 @@ void nand_boot(void)
{
__attribute__((noreturn)) void (*uboot)(void);
- nfc = (void *)NFC_BASE_ADDR;
-
/*
* CONFIG_SYS_NAND_U_BOOT_OFFS and CONFIG_SYS_NAND_U_BOOT_SIZE must
* be aligned to full pages
--
1.6.2.5
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply related [flat|nested] 4+ messages in thread* [U-Boot] [RFC][PATCH 14/19] nand_fsl_nfc: get rid of local var
2010-07-29 10:45 [U-Boot] [RFC][PATCH 14/19] nand_fsl_nfc: get rid of local var Heiko Schocher
@ 2010-07-29 16:40 ` Scott Wood
2010-07-30 6:24 ` Heiko Schocher
2010-08-03 10:15 ` [U-Boot] [RFC][PATCH v2 " Heiko Schocher
0 siblings, 2 replies; 4+ messages in thread
From: Scott Wood @ 2010-07-29 16:40 UTC (permalink / raw)
To: u-boot
On Thu, 29 Jul 2010 12:45:03 +0200
Heiko Schocher <hs@denx.de> wrote:
> If we have -fPIC enabled, this var leads in one entry in the
> GOT. The result of this is that the image size is > 0x800.
>
> Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Scott Wood <scottwood@freescale.com>
> diff --git a/nand_spl/nand_boot_fsl_nfc.c b/nand_spl/nand_boot_fsl_nfc.c
> index 9720f6a..0543512 100644
> --- a/nand_spl/nand_boot_fsl_nfc.c
> +++ b/nand_spl/nand_boot_fsl_nfc.c
> @@ -34,10 +34,9 @@
> #include <asm/io.h>
> #include <fsl_nfc.h>
>
> -struct fsl_nfc_regs *nfc;
> -
> static void nfc_wait_ready(void)
> {
> + struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
Alternatively, would this work at file scope?
static struct fsl_nfc_regs *const nfc = (void *)NFC_BASE_ADDR;
-Scott
^ permalink raw reply [flat|nested] 4+ messages in thread* [U-Boot] [RFC][PATCH 14/19] nand_fsl_nfc: get rid of local var
2010-07-29 16:40 ` Scott Wood
@ 2010-07-30 6:24 ` Heiko Schocher
2010-08-03 10:15 ` [U-Boot] [RFC][PATCH v2 " Heiko Schocher
1 sibling, 0 replies; 4+ messages in thread
From: Heiko Schocher @ 2010-07-30 6:24 UTC (permalink / raw)
To: u-boot
Hello Scott,
Scott Wood wrote:
> On Thu, 29 Jul 2010 12:45:03 +0200
> Heiko Schocher <hs@denx.de> wrote:
>
>> If we have -fPIC enabled, this var leads in one entry in the
>> GOT. The result of this is that the image size is > 0x800.
>>
>> Signed-off-by: Heiko Schocher <hs@denx.de>
>
> Acked-by: Scott Wood <scottwood@freescale.com>
>
>> diff --git a/nand_spl/nand_boot_fsl_nfc.c b/nand_spl/nand_boot_fsl_nfc.c
>> index 9720f6a..0543512 100644
>> --- a/nand_spl/nand_boot_fsl_nfc.c
>> +++ b/nand_spl/nand_boot_fsl_nfc.c
>> @@ -34,10 +34,9 @@
>> #include <asm/io.h>
>> #include <fsl_nfc.h>
>>
>> -struct fsl_nfc_regs *nfc;
>> -
>> static void nfc_wait_ready(void)
>> {
>> + struct fsl_nfc_regs *nfc = (void *)NFC_BASE_ADDR;
>
> Alternatively, would this work at file scope?
>
> static struct fsl_nfc_regs *const nfc = (void *)NFC_BASE_ADDR;
Great tip! Thanks, this works also, I fix this in version 2
bye
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply [flat|nested] 4+ messages in thread* [U-Boot] [RFC][PATCH v2 14/19] nand_fsl_nfc: get rid of local var
2010-07-29 16:40 ` Scott Wood
2010-07-30 6:24 ` Heiko Schocher
@ 2010-08-03 10:15 ` Heiko Schocher
1 sibling, 0 replies; 4+ messages in thread
From: Heiko Schocher @ 2010-08-03 10:15 UTC (permalink / raw)
To: u-boot
If we have -fPIC enabled, this var leads in one entry in the
GOT. The result of this is that the image size is > 0x800.
So make it a "static const" and this brings the size again < 0x800
Signed-off-by: Heiko Schocher <hs@denx.de>
Acked-by: Scott Wood <scottwood@freescale.com>
---
- changes since v1
add comment from Scott Wood:
- make the var nfc static const
nand_spl/nand_boot_fsl_nfc.c | 6 +-----
1 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/nand_spl/nand_boot_fsl_nfc.c b/nand_spl/nand_boot_fsl_nfc.c
index 9720f6a..50d6ea9 100644
--- a/nand_spl/nand_boot_fsl_nfc.c
+++ b/nand_spl/nand_boot_fsl_nfc.c
@@ -34,7 +34,7 @@
#include <asm/io.h>
#include <fsl_nfc.h>
-struct fsl_nfc_regs *nfc;
+static struct fsl_nfc_regs *const nfc = (void *)NFC_BASE_ADDR;
static void nfc_wait_ready(void)
{
@@ -228,8 +228,6 @@ static int nand_load(unsigned int from, unsigned int size, unsigned char *buf)
unsigned int maxpages = CONFIG_SYS_NAND_SIZE /
CONFIG_SYS_NAND_PAGE_SIZE;
- nfc = (void *)NFC_BASE_ADDR;
-
nfc_nand_init();
/* Convert to page number */
@@ -279,8 +277,6 @@ void nand_boot(void)
{
__attribute__((noreturn)) void (*uboot)(void);
- nfc = (void *)NFC_BASE_ADDR;
-
/*
* CONFIG_SYS_NAND_U_BOOT_OFFS and CONFIG_SYS_NAND_U_BOOT_SIZE must
* be aligned to full pages
--
1.6.2.5
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-08-03 10:15 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-29 10:45 [U-Boot] [RFC][PATCH 14/19] nand_fsl_nfc: get rid of local var Heiko Schocher
2010-07-29 16:40 ` Scott Wood
2010-07-30 6:24 ` Heiko Schocher
2010-08-03 10:15 ` [U-Boot] [RFC][PATCH v2 " Heiko Schocher
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox