Skip to content
Snippets Groups Projects
Commit 288afdc9 authored by Jeroen Hofstee's avatar Jeroen Hofstee Committed by Tom Rini
Browse files

common: cmd_ide: use __weak and add prototypes


clang chokes about the concept of having an alias to an
always_inlined function. gcc likely just ignores the always
inlined since binary sizes are equal before and after this
patch. Convert the aliases to weak functions and provide
missing prototypes.

cc: Pavel Herrmann <morpheus.ibis@gmail.com>
Signed-off-by: default avatarJeroen Hofstee <jeroen@myspectrum.nl>
parent 2bb8eb8e
No related branches found
No related tags found
No related merge requests found
...@@ -253,7 +253,7 @@ int do_diskboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[]) ...@@ -253,7 +253,7 @@ int do_diskboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
void __ide_led(uchar led, uchar status) __weak void ide_led(uchar led, uchar status)
{ {
#if defined(CONFIG_IDE_LED) && defined(PER8_BASE) /* required by LED_PORT */ #if defined(CONFIG_IDE_LED) && defined(PER8_BASE) /* required by LED_PORT */
static uchar led_buffer; /* Buffer for current LED status */ static uchar led_buffer; /* Buffer for current LED status */
...@@ -269,9 +269,6 @@ void __ide_led(uchar led, uchar status) ...@@ -269,9 +269,6 @@ void __ide_led(uchar led, uchar status)
#endif #endif
} }
void ide_led(uchar led, uchar status)
__attribute__ ((weak, alias("__ide_led")));
#ifndef CONFIG_IDE_LED /* define LED macros, they are not used anyways */ #ifndef CONFIG_IDE_LED /* define LED macros, they are not used anyways */
# define DEVICE_LED(x) 0 # define DEVICE_LED(x) 0
# define LED_IDE1 1 # define LED_IDE1 1
...@@ -280,7 +277,7 @@ void ide_led(uchar led, uchar status) ...@@ -280,7 +277,7 @@ void ide_led(uchar led, uchar status)
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
inline void __ide_outb(int dev, int port, unsigned char val) __weak void ide_outb(int dev, int port, unsigned char val)
{ {
debug("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n", debug("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
dev, port, val, dev, port, val,
...@@ -299,10 +296,7 @@ inline void __ide_outb(int dev, int port, unsigned char val) ...@@ -299,10 +296,7 @@ inline void __ide_outb(int dev, int port, unsigned char val)
#endif #endif
} }
void ide_outb(int dev, int port, unsigned char val) __weak unsigned char ide_inb(int dev, int port)
__attribute__ ((weak, alias("__ide_outb")));
inline unsigned char __ide_inb(int dev, int port)
{ {
uchar val; uchar val;
...@@ -318,9 +312,6 @@ inline unsigned char __ide_inb(int dev, int port) ...@@ -318,9 +312,6 @@ inline unsigned char __ide_inb(int dev, int port)
return val; return val;
} }
unsigned char ide_inb(int dev, int port)
__attribute__ ((weak, alias("__ide_inb")));
void ide_init(void) void ide_init(void)
{ {
unsigned char c; unsigned char c;
...@@ -461,23 +452,14 @@ block_dev_desc_t *ide_get_dev(int dev) ...@@ -461,23 +452,14 @@ block_dev_desc_t *ide_get_dev(int dev)
/* ------------------------------------------------------------------------- */ /* ------------------------------------------------------------------------- */
void ide_input_swap_data(int dev, ulong *sect_buf, int words)
__attribute__ ((weak, alias("__ide_input_swap_data")));
void ide_input_data(int dev, ulong *sect_buf, int words)
__attribute__ ((weak, alias("__ide_input_data")));
void ide_output_data(int dev, const ulong *sect_buf, int words)
__attribute__ ((weak, alias("__ide_output_data")));
/* We only need to swap data if we are running on a big endian cpu. */ /* We only need to swap data if we are running on a big endian cpu. */
#if defined(__LITTLE_ENDIAN) #if defined(__LITTLE_ENDIAN)
void __ide_input_swap_data(int dev, ulong *sect_buf, int words) __weak void ide_input_swap_data(int dev, ulong *sect_buf, int words)
{ {
ide_input_data(dev, sect_buf, words); ide_input_data(dev, sect_buf, words);
} }
#else #else
void __ide_input_swap_data(int dev, ulong *sect_buf, int words) __weak void ide_input_swap_data(int dev, ulong *sect_buf, int words)
{ {
volatile ushort *pbuf = volatile ushort *pbuf =
(ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG); (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
...@@ -500,7 +482,7 @@ void __ide_input_swap_data(int dev, ulong *sect_buf, int words) ...@@ -500,7 +482,7 @@ void __ide_input_swap_data(int dev, ulong *sect_buf, int words)
#if defined(CONFIG_IDE_SWAP_IO) #if defined(CONFIG_IDE_SWAP_IO)
void __ide_output_data(int dev, const ulong *sect_buf, int words) __weak void ide_output_data(int dev, const ulong *sect_buf, int words)
{ {
ushort *dbuf; ushort *dbuf;
volatile ushort *pbuf; volatile ushort *pbuf;
...@@ -515,7 +497,7 @@ void __ide_output_data(int dev, const ulong *sect_buf, int words) ...@@ -515,7 +497,7 @@ void __ide_output_data(int dev, const ulong *sect_buf, int words)
} }
} }
#else /* ! CONFIG_IDE_SWAP_IO */ #else /* ! CONFIG_IDE_SWAP_IO */
void __ide_output_data(int dev, const ulong *sect_buf, int words) __weak void ide_output_data(int dev, const ulong *sect_buf, int words)
{ {
#if defined(CONFIG_IDE_AHB) #if defined(CONFIG_IDE_AHB)
ide_write_data(dev, sect_buf, words); ide_write_data(dev, sect_buf, words);
...@@ -526,7 +508,7 @@ void __ide_output_data(int dev, const ulong *sect_buf, int words) ...@@ -526,7 +508,7 @@ void __ide_output_data(int dev, const ulong *sect_buf, int words)
#endif /* CONFIG_IDE_SWAP_IO */ #endif /* CONFIG_IDE_SWAP_IO */
#if defined(CONFIG_IDE_SWAP_IO) #if defined(CONFIG_IDE_SWAP_IO)
void __ide_input_data(int dev, ulong *sect_buf, int words) __weak void ide_input_data(int dev, ulong *sect_buf, int words)
{ {
ushort *dbuf; ushort *dbuf;
volatile ushort *pbuf; volatile ushort *pbuf;
...@@ -544,7 +526,7 @@ void __ide_input_data(int dev, ulong *sect_buf, int words) ...@@ -544,7 +526,7 @@ void __ide_input_data(int dev, ulong *sect_buf, int words)
} }
} }
#else /* ! CONFIG_IDE_SWAP_IO */ #else /* ! CONFIG_IDE_SWAP_IO */
void __ide_input_data(int dev, ulong *sect_buf, int words) __weak void ide_input_data(int dev, ulong *sect_buf, int words)
{ {
#if defined(CONFIG_IDE_AHB) #if defined(CONFIG_IDE_AHB)
ide_read_data(dev, sect_buf, words); ide_read_data(dev, sect_buf, words);
...@@ -1038,17 +1020,10 @@ int ide_device_present(int dev) ...@@ -1038,17 +1020,10 @@ int ide_device_present(int dev)
* ATAPI Support * ATAPI Support
*/ */
void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts)
__attribute__ ((weak, alias("__ide_input_data_shorts")));
void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts)
__attribute__ ((weak, alias("__ide_output_data_shorts")));
#if defined(CONFIG_IDE_SWAP_IO) #if defined(CONFIG_IDE_SWAP_IO)
/* since ATAPI may use commands with not 4 bytes alligned length /* since ATAPI may use commands with not 4 bytes alligned length
* we have our own transfer functions, 2 bytes alligned */ * we have our own transfer functions, 2 bytes alligned */
void __ide_output_data_shorts(int dev, ushort *sect_buf, int shorts) __weak void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts)
{ {
ushort *dbuf; ushort *dbuf;
volatile ushort *pbuf; volatile ushort *pbuf;
...@@ -1065,7 +1040,7 @@ void __ide_output_data_shorts(int dev, ushort *sect_buf, int shorts) ...@@ -1065,7 +1040,7 @@ void __ide_output_data_shorts(int dev, ushort *sect_buf, int shorts)
} }
} }
void __ide_input_data_shorts(int dev, ushort *sect_buf, int shorts) __weak void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts)
{ {
ushort *dbuf; ushort *dbuf;
volatile ushort *pbuf; volatile ushort *pbuf;
...@@ -1083,12 +1058,12 @@ void __ide_input_data_shorts(int dev, ushort *sect_buf, int shorts) ...@@ -1083,12 +1058,12 @@ void __ide_input_data_shorts(int dev, ushort *sect_buf, int shorts)
} }
#else /* ! CONFIG_IDE_SWAP_IO */ #else /* ! CONFIG_IDE_SWAP_IO */
void __ide_output_data_shorts(int dev, ushort *sect_buf, int shorts) __weak void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts)
{ {
outsw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, shorts); outsw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, shorts);
} }
void __ide_input_data_shorts(int dev, ushort *sect_buf, int shorts) __weak void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts)
{ {
insw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, shorts); insw(ATA_CURR_BASE(dev) + ATA_DATA_REG, sect_buf, shorts);
} }
......
...@@ -66,12 +66,16 @@ void ide_write_data(int dev, const ulong *sect_buf, int words); ...@@ -66,12 +66,16 @@ void ide_write_data(int dev, const ulong *sect_buf, int words);
/* /*
* I/O function overrides * I/O function overrides
*/ */
unsigned char ide_inb(int dev, int port);
void ide_outb(int dev, int port, unsigned char val);
void ide_input_swap_data(int dev, ulong *sect_buf, int words); void ide_input_swap_data(int dev, ulong *sect_buf, int words);
void ide_input_data(int dev, ulong *sect_buf, int words); void ide_input_data(int dev, ulong *sect_buf, int words);
void ide_output_data(int dev, const ulong *sect_buf, int words); void ide_output_data(int dev, const ulong *sect_buf, int words);
void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts); void ide_input_data_shorts(int dev, ushort *sect_buf, int shorts);
void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts); void ide_output_data_shorts(int dev, ushort *sect_buf, int shorts);
void ide_led(uchar led, uchar status);
/** /**
* board_start_ide() - Start up the board IDE interfac * board_start_ide() - Start up the board IDE interfac
* *
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment