/* * dj64 - 64bit djgpp-compatible tool-chain * Copyright (C) 2021-2024 @stsp * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ #include #ifdef _IN_DJ64 #include "thunks_a.h" #endif #ifndef IN_ASMOBJ #include #define IN_ASMOBJ 3 #include #endif #define _ASM(v) { _S(_##v) } #define __ASM(t, v) _ASM(v) #define __ASM_PTR(t, v) _ASM(v) #define __ASM_ARR(t, v, l) _ASM(v) #define __ASM_FUNC(v) _ASM(v) #define __ASM_N(t, v) _ASM(v) #define SEMIC , #ifndef _IN_DJ64 #define STATIC static #else #define STATIC #endif static const struct athunk _asm_thunks[] = { #include "glob_asm.h" }; #ifndef _IN_DJ64 static uint32_t asm_tab[_countof(_asm_thunks)]; #else #define asm_tab NULL #endif STATIC struct athunks asm_thunks = { _asm_thunks, _countof(_asm_thunks), asm_tab, }; #ifndef _IN_DJ64 __attribute__((constructor)) static void init(void) { register_athunks(&asm_thunks); } #endif