blob: 7f13f6eab38e513cd5307b93acbc98336464b445 [file] [edit]
/*
* Copyright 2018, Data61, CSIRO (ABN 41 687 119 230)
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <string.h>
#include <byteswap.h>
/* argc and argv are exported in cake.S */
extern unsigned int argc;
extern char **argv;
void ffiget_arg_count(unsigned char *c, long clen, unsigned char *a, long alen) {
uint16_t result = bswap_16(argc);
memcpy(a, &result, sizeof(result));
}
void ffiget_arg_length(unsigned char *c, long clen, unsigned char *a, long alen) {
uint16_t arg;
memcpy(&arg, a, sizeof(arg));
arg = bswap_16(arg);
uint16_t len_result = bswap_16(strlen(argv[arg]));
memcpy(a, &len_result, sizeof(len_result));
}
void ffiget_arg(unsigned char *c, long clen, unsigned char *a, long alen) {
uint16_t arg;
memcpy(&arg, a, sizeof(arg));
arg = bswap_16(arg);
strcpy(a, argv[arg]);
}