forked from Mirrors/opensbi
		
	lib: fix pointer of type 'void *' used in arithmetic
Using "void *" in arithmetic causes errors with strict compiler settings: "error: pointer of type 'void *' used in arithmetic [-Werror=pointer-arith]" Avoid these by calculating on "char *" where 1-byte data size is assumed. Signed-off-by: Jukka Laitinen <jukkax@ssrc.tii.ae> Reviewed-by: Dong Du <Dd_nirvana@sjtu.edu.cn> Reviewed-by: Xiang W <wxjstz@126.com> Reviewed-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
		
				
					committed by
					
						
						Anup Patel
					
				
			
			
				
	
			
			
			
						parent
						
							fb688d9e9d
						
					
				
				
					commit
					5d025eb235
				
			@@ -66,7 +66,7 @@ static inline void  __sbi_fifo_enqueue(struct sbi_fifo *fifo, void *data)
 | 
			
		||||
	if (head >= fifo->num_entries)
 | 
			
		||||
		head = head - fifo->num_entries;
 | 
			
		||||
 | 
			
		||||
	sbi_memcpy(fifo->queue + head * fifo->entry_size, data, fifo->entry_size);
 | 
			
		||||
	sbi_memcpy((char *)fifo->queue + head * fifo->entry_size, data, fifo->entry_size);
 | 
			
		||||
 | 
			
		||||
	fifo->avail++;
 | 
			
		||||
}
 | 
			
		||||
@@ -142,7 +142,7 @@ int sbi_fifo_inplace_update(struct sbi_fifo *fifo, void *in,
 | 
			
		||||
		index = fifo->tail + i;
 | 
			
		||||
		if (index >= fifo->num_entries)
 | 
			
		||||
			index -= fifo->num_entries;
 | 
			
		||||
		entry = (void *)fifo->queue + (u32)index * fifo->entry_size;
 | 
			
		||||
		entry = (char *)fifo->queue + (u32)index * fifo->entry_size;
 | 
			
		||||
		ret = fptr(in, entry);
 | 
			
		||||
 | 
			
		||||
		if (ret == SBI_FIFO_SKIP || ret == SBI_FIFO_UPDATED) {
 | 
			
		||||
@@ -184,7 +184,7 @@ int sbi_fifo_dequeue(struct sbi_fifo *fifo, void *data)
 | 
			
		||||
		return SBI_ENOENT;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	sbi_memcpy(data, fifo->queue + (u32)fifo->tail * fifo->entry_size,
 | 
			
		||||
	sbi_memcpy(data, (char *)fifo->queue + (u32)fifo->tail * fifo->entry_size,
 | 
			
		||||
	       fifo->entry_size);
 | 
			
		||||
 | 
			
		||||
	fifo->avail--;
 | 
			
		||||
 
 | 
			
		||||
@@ -149,8 +149,8 @@ void *sbi_memmove(void *dest, const void *src, size_t count)
 | 
			
		||||
			count--;
 | 
			
		||||
		}
 | 
			
		||||
	} else {
 | 
			
		||||
		temp1 = dest + count - 1;
 | 
			
		||||
		temp2 = src + count - 1;
 | 
			
		||||
		temp1 = (char *)dest + count - 1;
 | 
			
		||||
		temp2 = (char *)src + count - 1;
 | 
			
		||||
 | 
			
		||||
		while (count > 0) {
 | 
			
		||||
			*temp1-- = *temp2--;
 | 
			
		||||
 
 | 
			
		||||
@@ -56,13 +56,13 @@ extern struct fdt_i2c_adapter fdt_i2c_adapter_sifive;
 | 
			
		||||
static inline void sifive_i2c_setreg(struct sifive_i2c_adapter *adap,
 | 
			
		||||
				     uint8_t reg, uint8_t value)
 | 
			
		||||
{
 | 
			
		||||
	writel(value, (volatile void *)adap->addr + reg);
 | 
			
		||||
	writel(value, (volatile char *)adap->addr + reg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static inline uint8_t sifive_i2c_getreg(struct sifive_i2c_adapter *adap,
 | 
			
		||||
					uint8_t reg)
 | 
			
		||||
{
 | 
			
		||||
	return readl((volatile void *)adap->addr + reg);
 | 
			
		||||
	return readl((volatile char *)adap->addr + reg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int sifive_i2c_adapter_rxack(struct sifive_i2c_adapter *adap)
 | 
			
		||||
 
 | 
			
		||||
@@ -116,7 +116,7 @@ static int irqchip_plic_cold_init(void *fdt, int nodeoff,
 | 
			
		||||
 | 
			
		||||
static void thead_plic_plat_init(struct plic_data *pd)
 | 
			
		||||
{
 | 
			
		||||
	writel_relaxed(BIT(0), (void *)pd->addr + THEAD_PLIC_CTRL_REG);
 | 
			
		||||
	writel_relaxed(BIT(0), (char *)pd->addr + THEAD_PLIC_CTRL_REG);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static const struct fdt_match irqchip_plic_match[] = {
 | 
			
		||||
 
 | 
			
		||||
@@ -23,7 +23,7 @@
 | 
			
		||||
 | 
			
		||||
static void plic_set_priority(struct plic_data *plic, u32 source, u32 val)
 | 
			
		||||
{
 | 
			
		||||
	volatile void *plic_priority = (void *)plic->addr +
 | 
			
		||||
	volatile void *plic_priority = (char *)plic->addr +
 | 
			
		||||
			PLIC_PRIORITY_BASE + 4 * source;
 | 
			
		||||
	writel(val, plic_priority);
 | 
			
		||||
}
 | 
			
		||||
@@ -35,19 +35,19 @@ void plic_set_thresh(struct plic_data *plic, u32 cntxid, u32 val)
 | 
			
		||||
	if (!plic)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	plic_thresh = (void *)plic->addr +
 | 
			
		||||
	plic_thresh = (char *)plic->addr +
 | 
			
		||||
		      PLIC_CONTEXT_BASE + PLIC_CONTEXT_STRIDE * cntxid;
 | 
			
		||||
	writel(val, plic_thresh);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void plic_set_ie(struct plic_data *plic, u32 cntxid, u32 word_index, u32 val)
 | 
			
		||||
{
 | 
			
		||||
	volatile void *plic_ie;
 | 
			
		||||
	volatile char *plic_ie;
 | 
			
		||||
 | 
			
		||||
	if (!plic)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	plic_ie = (void *)plic->addr +
 | 
			
		||||
	plic_ie = (char *)plic->addr +
 | 
			
		||||
		   PLIC_ENABLE_BASE + PLIC_ENABLE_STRIDE * cntxid;
 | 
			
		||||
	writel(val, plic_ie + word_index * 4);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
 | 
			
		||||
#define WDT_MODE_REG			0x18
 | 
			
		||||
 | 
			
		||||
static volatile void *sunxi_wdt_base;
 | 
			
		||||
static volatile char *sunxi_wdt_base;
 | 
			
		||||
 | 
			
		||||
static int sunxi_wdt_system_reset_check(u32 type, u32 reason)
 | 
			
		||||
{
 | 
			
		||||
@@ -59,7 +59,7 @@ static int sunxi_wdt_reset_init(void *fdt, int nodeoff,
 | 
			
		||||
	if (rc < 0 || !reg_addr)
 | 
			
		||||
		return SBI_ENODEV;
 | 
			
		||||
 | 
			
		||||
	sunxi_wdt_base = (volatile void *)(unsigned long)reg_addr;
 | 
			
		||||
	sunxi_wdt_base = (volatile char *)(unsigned long)reg_addr;
 | 
			
		||||
 | 
			
		||||
	sbi_system_reset_add_device(&sunxi_wdt_reset);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -59,7 +59,7 @@ extern void __thead_pre_start_warm(void);
 | 
			
		||||
static int thead_reset_init(void *fdt, int nodeoff,
 | 
			
		||||
				 const struct fdt_match *match)
 | 
			
		||||
{
 | 
			
		||||
	void *p;
 | 
			
		||||
	char *p;
 | 
			
		||||
	const fdt64_t *val;
 | 
			
		||||
	const fdt32_t *val_w;
 | 
			
		||||
	int len, i;
 | 
			
		||||
@@ -91,7 +91,7 @@ static int thead_reset_init(void *fdt, int nodeoff,
 | 
			
		||||
	/* Custom reset method for secondary harts */
 | 
			
		||||
	val = fdt_getprop(fdt, nodeoff, "entry-reg", &len);
 | 
			
		||||
	if (len > 0 && val) {
 | 
			
		||||
		p = (void *)(ulong)fdt64_to_cpu(*val);
 | 
			
		||||
          p = (char *)(ulong)fdt64_to_cpu(*val);
 | 
			
		||||
 | 
			
		||||
		val_w = fdt_getprop(fdt, nodeoff, "entry-cnt", &len);
 | 
			
		||||
		if (len > 0 && val_w) {
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
 | 
			
		||||
/* clang-format on */
 | 
			
		||||
 | 
			
		||||
static volatile void *uart_base;
 | 
			
		||||
static volatile char *uart_base;
 | 
			
		||||
 | 
			
		||||
static u32 get_reg(u32 num)
 | 
			
		||||
{
 | 
			
		||||
@@ -67,7 +67,7 @@ int gaisler_uart_init(unsigned long base, u32 in_freq, u32 baudrate)
 | 
			
		||||
{
 | 
			
		||||
	u32 ctrl;
 | 
			
		||||
 | 
			
		||||
	uart_base = (volatile void *)base;
 | 
			
		||||
	uart_base = (volatile char *)base;
 | 
			
		||||
 | 
			
		||||
	/* Configure baudrate */
 | 
			
		||||
	if (in_freq)
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
#define UART_TX_FULL  0x2
 | 
			
		||||
#define UART_RX_FULL  0x8
 | 
			
		||||
 | 
			
		||||
static volatile void *uart_base;
 | 
			
		||||
static volatile char *uart_base;
 | 
			
		||||
 | 
			
		||||
static void shakti_uart_putc(char ch)
 | 
			
		||||
{
 | 
			
		||||
@@ -46,7 +46,7 @@ static struct sbi_console_device shakti_console = {
 | 
			
		||||
 | 
			
		||||
int shakti_uart_init(unsigned long base, u32 in_freq, u32 baudrate)
 | 
			
		||||
{
 | 
			
		||||
	uart_base = (volatile void *)base;
 | 
			
		||||
	uart_base = (volatile char *)base;
 | 
			
		||||
	u16 baud = (u16)(in_freq/(16 * baudrate));
 | 
			
		||||
	writew(baud, uart_base + REG_BAUD);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
 | 
			
		||||
/* clang-format on */
 | 
			
		||||
 | 
			
		||||
static volatile void *uart_base;
 | 
			
		||||
static volatile char *uart_base;
 | 
			
		||||
static u32 uart_in_freq;
 | 
			
		||||
static u32 uart_baudrate;
 | 
			
		||||
 | 
			
		||||
@@ -90,7 +90,7 @@ static struct sbi_console_device sifive_console = {
 | 
			
		||||
 | 
			
		||||
int sifive_uart_init(unsigned long base, u32 in_freq, u32 baudrate)
 | 
			
		||||
{
 | 
			
		||||
	uart_base     = (volatile void *)base;
 | 
			
		||||
	uart_base     = (volatile char *)base;
 | 
			
		||||
	uart_in_freq  = in_freq;
 | 
			
		||||
	uart_baudrate = baudrate;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@
 | 
			
		||||
 | 
			
		||||
/* clang-format on */
 | 
			
		||||
 | 
			
		||||
static volatile void *uart8250_base;
 | 
			
		||||
static volatile char *uart8250_base;
 | 
			
		||||
static u32 uart8250_in_freq;
 | 
			
		||||
static u32 uart8250_baudrate;
 | 
			
		||||
static u32 uart8250_reg_width;
 | 
			
		||||
@@ -95,7 +95,7 @@ int uart8250_init(unsigned long base, u32 in_freq, u32 baudrate, u32 reg_shift,
 | 
			
		||||
{
 | 
			
		||||
	u16 bdiv;
 | 
			
		||||
 | 
			
		||||
	uart8250_base      = (volatile void *)base;
 | 
			
		||||
	uart8250_base      = (volatile char *)base;
 | 
			
		||||
	uart8250_reg_shift = reg_shift;
 | 
			
		||||
	uart8250_reg_width = reg_width;
 | 
			
		||||
	uart8250_in_freq   = in_freq;
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ static u64 mtimer_time_rd32(volatile u64 *addr)
 | 
			
		||||
static void mtimer_time_wr32(bool timecmp, u64 value, volatile u64 *addr)
 | 
			
		||||
{
 | 
			
		||||
	writel_relaxed((timecmp) ? -1U : 0U, (void *)(addr));
 | 
			
		||||
	writel_relaxed((u32)(value >> 32), (void *)(addr) + 0x04);
 | 
			
		||||
	writel_relaxed((u32)(value >> 32), (char *)(addr) + 0x04);
 | 
			
		||||
	writel_relaxed((u32)value, (void *)(addr));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user