All of lore.kernel.org
 help / color / mirror / Atom feed
From: Timur Tabi <timur@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] Why are some global vars part of the image, and some not?
Date: Fri, 03 Nov 2006 15:58:29 -0600	[thread overview]
Message-ID: <454BBB85.5040507@freescale.com> (raw)

I have the following code in one of my files:

#ifdef CFG_SPD_BUS_NUM
static volatile unsigned int i2c_bus_num = CFG_SPD_BUS_NUM;
#else
static volatile unsigned int i2c_bus_num = 0;
#endif

static volatile struct fsl_i2c *i2c_dev[2] = {
	(struct fsl_i2c *) (CFG_IMMR + CFG_I2C_OFFSET),
#ifdef CFG_I2C2_OFFSET
	(struct fsl_i2c *) (CFG_IMMR + CFG_I2C2_OFFSET)
#endif
};

As you can see, I defined two static volatile global vars: i2c_bus_num and 
i2c_dev.

My U-Boot image is 0x294E0 bytes in size, and it's located at address 
0xFE000000.  When I run U-Boot, the address of i2c_bus_num is 0xfe02a114, and 
the address of i2c_dev[] is 0xfe028124.

In other words, i2c_dev[] is part of the actual U-Boot image, but i2c_bus_num, 
which is defined right next to it, isn't.  This means that i2c_dev[] is 
properly initialized, but i2c_bus_num is set to 0xFFFFFFFF (the value that 
erased flash has).

How is this possible?  How can two adjacent global variables be located is 
completely different memory segments?

-- 
Timur Tabi
Linux Kernel Developer @ Freescale

             reply	other threads:[~2006-11-03 21:58 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-11-03 21:58 Timur Tabi [this message]
2006-11-03 22:19 ` [U-Boot-Users] Why are some global vars part of the image, and some not? Timur Tabi
2006-11-03 23:47   ` Wolfgang Denk
2006-11-04  0:09     ` Timur Tabi
2006-11-04  0:33       ` Wolfgang Denk
2006-11-03 23:44 ` Wolfgang Denk
2006-11-04  0:07   ` Timur Tabi
2006-11-04  0:31     ` Wolfgang Denk
2006-11-04  1:38       ` Timur Tabi
2006-11-04  2:04         ` Wolfgang Denk
2006-11-06 17:43           ` Scott Wood
2006-11-06 18:03             ` Jerry Van Baren
2006-11-06 18:08               ` Timur Tabi
2006-11-06 18:48                 ` Jerry Van Baren
2006-11-06 18:56                   ` Scott Wood
2006-11-06 19:06                     ` Jerry Van Baren
2006-11-06 19:46                       ` Scott Wood
2006-11-06 19:54                         ` Timur Tabi
2006-11-06 20:13                         ` Jerry Van Baren
2006-11-06 20:21                           ` Timur Tabi
2006-11-06 20:44                             ` Wolfgang Denk
2006-11-06 20:35                         ` Tolunay Orkun
2006-11-06 20:29                 ` Wolfgang Denk
2006-11-06 20:26             ` Wolfgang Denk
2006-11-06 20:48               ` Scott Wood
2006-11-06 21:15                 ` Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=454BBB85.5040507@freescale.com \
    --to=timur@freescale.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.