/*
 * wnix, a Unix-like operating system for WebAssembly applications.
 * Copyright (C) 2025  Xavier Del Campo Romero
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

#include <bin.h>
#include <bin/proc.h>
#include <bin/types.h>
#include <nanowasm/nw.h>

const struct nw_inst_cfg bin_proc_cfg =
{
    .entry = "_start",
    .interp_cfg =
    {
        .io =
        {
            .read = bin_proc_read,
            .eof = bin_proc_eof,
            .seek = bin_proc_seek,
            .tell = bin_proc_tell,
            .pc = bin_proc_pc
        },

        .global =
        {
            .load = bin_proc_g_load,
            .store = bin_proc_g_store
        },

        .linear =
        {
            .load = bin_proc_l_load,
            .store = bin_proc_l_store
        },

        .stack =
        {
            .push = bin_proc_s_push,
            .pop = bin_proc_s_pop,
            .read = bin_proc_s_read,
            .write = bin_proc_s_write,
            .ptr = bin_proc_s_ptr
        }
    }
};
