|
|
|
@ -52,7 +52,7 @@ static int API_getc(va_list ap) |
|
|
|
|
{ |
|
|
|
|
int *c; |
|
|
|
|
|
|
|
|
|
if ((c = (int *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((c = (int *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
*c = getc(); |
|
|
|
@ -68,7 +68,7 @@ static int API_tstc(va_list ap) |
|
|
|
|
{ |
|
|
|
|
int *t; |
|
|
|
|
|
|
|
|
|
if ((t = (int *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((t = (int *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
*t = tstc(); |
|
|
|
@ -84,7 +84,7 @@ static int API_putc(va_list ap) |
|
|
|
|
{ |
|
|
|
|
char *c; |
|
|
|
|
|
|
|
|
|
if ((c = (char *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((c = (char *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
putc(*c); |
|
|
|
@ -100,7 +100,7 @@ static int API_puts(va_list ap) |
|
|
|
|
{ |
|
|
|
|
char *s; |
|
|
|
|
|
|
|
|
|
if ((s = (char *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((s = (char *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
puts(s); |
|
|
|
@ -132,7 +132,7 @@ static int API_get_sys_info(va_list ap) |
|
|
|
|
{ |
|
|
|
|
struct sys_info *si; |
|
|
|
|
|
|
|
|
|
si = (struct sys_info *)va_arg(ap, u_int32_t); |
|
|
|
|
si = (struct sys_info *)va_arg(ap, uintptr_t); |
|
|
|
|
if (si == NULL) |
|
|
|
|
return API_ENOMEM; |
|
|
|
|
|
|
|
|
@ -148,7 +148,7 @@ static int API_udelay(va_list ap) |
|
|
|
|
{ |
|
|
|
|
unsigned long *d; |
|
|
|
|
|
|
|
|
|
if ((d = (unsigned long *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((d = (unsigned long *)va_arg(ap, unsigned long)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
udelay(*d); |
|
|
|
@ -164,11 +164,11 @@ static int API_get_timer(va_list ap) |
|
|
|
|
{ |
|
|
|
|
unsigned long *base, *cur; |
|
|
|
|
|
|
|
|
|
cur = (unsigned long *)va_arg(ap, u_int32_t); |
|
|
|
|
cur = (unsigned long *)va_arg(ap, unsigned long); |
|
|
|
|
if (cur == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
base = (unsigned long *)va_arg(ap, u_int32_t); |
|
|
|
|
base = (unsigned long *)va_arg(ap, unsigned long); |
|
|
|
|
if (base == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -199,7 +199,7 @@ static int API_dev_enum(va_list ap) |
|
|
|
|
struct device_info *di; |
|
|
|
|
|
|
|
|
|
/* arg is ptr to the device_info struct we are going to fill out */ |
|
|
|
|
di = (struct device_info *)va_arg(ap, u_int32_t); |
|
|
|
|
di = (struct device_info *)va_arg(ap, uintptr_t); |
|
|
|
|
if (di == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -233,7 +233,7 @@ static int API_dev_open(va_list ap) |
|
|
|
|
int err = 0; |
|
|
|
|
|
|
|
|
|
/* arg is ptr to the device_info struct */ |
|
|
|
|
di = (struct device_info *)va_arg(ap, u_int32_t); |
|
|
|
|
di = (struct device_info *)va_arg(ap, uintptr_t); |
|
|
|
|
if (di == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -265,7 +265,7 @@ static int API_dev_close(va_list ap) |
|
|
|
|
int err = 0; |
|
|
|
|
|
|
|
|
|
/* arg is ptr to the device_info struct */ |
|
|
|
|
di = (struct device_info *)va_arg(ap, u_int32_t); |
|
|
|
|
di = (struct device_info *)va_arg(ap, uintptr_t); |
|
|
|
|
if (di == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -319,7 +319,7 @@ static int API_dev_write(va_list ap) |
|
|
|
|
int err = 0; |
|
|
|
|
|
|
|
|
|
/* 1. arg is ptr to the device_info struct */ |
|
|
|
|
di = (struct device_info *)va_arg(ap, u_int32_t); |
|
|
|
|
di = (struct device_info *)va_arg(ap, uintptr_t); |
|
|
|
|
if (di == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -329,12 +329,12 @@ static int API_dev_write(va_list ap) |
|
|
|
|
return API_ENODEV; |
|
|
|
|
|
|
|
|
|
/* 2. arg is ptr to buffer from where to get data to write */ |
|
|
|
|
buf = (void *)va_arg(ap, u_int32_t); |
|
|
|
|
buf = (void *)va_arg(ap, uintptr_t); |
|
|
|
|
if (buf == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
/* 3. arg is length of buffer */ |
|
|
|
|
len = (int *)va_arg(ap, u_int32_t); |
|
|
|
|
len = (int *)va_arg(ap, uintptr_t); |
|
|
|
|
if (len == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
if (*len <= 0) |
|
|
|
@ -387,7 +387,7 @@ static int API_dev_read(va_list ap) |
|
|
|
|
int *len_net, *act_len_net; |
|
|
|
|
|
|
|
|
|
/* 1. arg is ptr to the device_info struct */ |
|
|
|
|
di = (struct device_info *)va_arg(ap, u_int32_t); |
|
|
|
|
di = (struct device_info *)va_arg(ap, uintptr_t); |
|
|
|
|
if (di == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -397,23 +397,23 @@ static int API_dev_read(va_list ap) |
|
|
|
|
return API_ENODEV; |
|
|
|
|
|
|
|
|
|
/* 2. arg is ptr to buffer from where to put the read data */ |
|
|
|
|
buf = (void *)va_arg(ap, u_int32_t); |
|
|
|
|
buf = (void *)va_arg(ap, uintptr_t); |
|
|
|
|
if (buf == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
if (di->type & DEV_TYP_STOR) { |
|
|
|
|
/* 3. arg - ptr to var with # of blocks to read */ |
|
|
|
|
len_stor = (lbasize_t *)va_arg(ap, u_int32_t); |
|
|
|
|
len_stor = (lbasize_t *)va_arg(ap, uintptr_t); |
|
|
|
|
if (!len_stor) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
if (*len_stor <= 0) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
/* 4. arg - ptr to var with start block */ |
|
|
|
|
start = (lbastart_t *)va_arg(ap, u_int32_t); |
|
|
|
|
start = (lbastart_t *)va_arg(ap, uintptr_t); |
|
|
|
|
|
|
|
|
|
/* 5. arg - ptr to var where to put the len actually read */ |
|
|
|
|
act_len_stor = (lbasize_t *)va_arg(ap, u_int32_t); |
|
|
|
|
act_len_stor = (lbasize_t *)va_arg(ap, uintptr_t); |
|
|
|
|
if (!act_len_stor) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -422,14 +422,14 @@ static int API_dev_read(va_list ap) |
|
|
|
|
} else if (di->type & DEV_TYP_NET) { |
|
|
|
|
|
|
|
|
|
/* 3. arg points to the var with length of packet to read */ |
|
|
|
|
len_net = (int *)va_arg(ap, u_int32_t); |
|
|
|
|
len_net = (int *)va_arg(ap, uintptr_t); |
|
|
|
|
if (!len_net) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
if (*len_net <= 0) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
/* 4. - ptr to var where to put the len actually read */ |
|
|
|
|
act_len_net = (int *)va_arg(ap, u_int32_t); |
|
|
|
|
act_len_net = (int *)va_arg(ap, uintptr_t); |
|
|
|
|
if (!act_len_net) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
@ -453,9 +453,9 @@ static int API_env_get(va_list ap) |
|
|
|
|
{ |
|
|
|
|
char *name, **value; |
|
|
|
|
|
|
|
|
|
if ((name = (char *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((name = (char *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
if ((value = (char **)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((value = (char **)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
*value = getenv(name); |
|
|
|
@ -476,9 +476,9 @@ static int API_env_set(va_list ap) |
|
|
|
|
{ |
|
|
|
|
char *name, *value; |
|
|
|
|
|
|
|
|
|
if ((name = (char *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((name = (char *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
if ((value = (char *)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((value = (char *)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
setenv(name, value); |
|
|
|
@ -498,9 +498,9 @@ static int API_env_enum(va_list ap) |
|
|
|
|
int i, n; |
|
|
|
|
char *last, **next; |
|
|
|
|
|
|
|
|
|
last = (char *)va_arg(ap, u_int32_t); |
|
|
|
|
last = (char *)va_arg(ap, unsigned long); |
|
|
|
|
|
|
|
|
|
if ((next = (char **)va_arg(ap, u_int32_t)) == NULL) |
|
|
|
|
if ((next = (char **)va_arg(ap, uintptr_t)) == NULL) |
|
|
|
|
return API_EINVAL; |
|
|
|
|
|
|
|
|
|
if (last == NULL) |
|
|
|
@ -662,14 +662,14 @@ void api_init(void) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
setenv_hex("api_address", (unsigned long)sig); |
|
|
|
|
debugf("API sig @ 0x%08x\n", sig); |
|
|
|
|
debugf("API sig @ 0x%lX\n", (unsigned long)sig); |
|
|
|
|
memcpy(sig->magic, API_SIG_MAGIC, 8); |
|
|
|
|
sig->version = API_SIG_VERSION; |
|
|
|
|
sig->syscall = &syscall; |
|
|
|
|
sig->checksum = 0; |
|
|
|
|
sig->checksum = crc32(0, (unsigned char *)sig, |
|
|
|
|
sizeof(struct api_signature)); |
|
|
|
|
debugf("syscall entry: 0x%08x\n", sig->syscall); |
|
|
|
|
debugf("syscall entry: 0x%lX\n", (unsigned long)sig->syscall); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void platform_set_mr(struct sys_info *si, unsigned long start, unsigned long size, |
|
|
|
|