157 lines
3.8 KiB
C
157 lines
3.8 KiB
C
#ifndef CORE_H
|
|
#define CORE_H
|
|
|
|
#include <klibc/compiler.h>
|
|
#include <stddef.h>
|
|
#include <stdlib.h>
|
|
#include <stdbool.h>
|
|
#include <inttypes.h>
|
|
#include <stdio.h>
|
|
#include <dprintf.h>
|
|
#include <com32.h>
|
|
#include <errno.h>
|
|
#include <syslinux/pmapi.h>
|
|
#include <syslinux/sysappend.h>
|
|
#include <kaboom.h>
|
|
#include <timer.h>
|
|
|
|
extern char core_xfer_buf[65536];
|
|
extern char core_cache_buf[65536];
|
|
extern char trackbuf[];
|
|
extern char CurrentDirName[];
|
|
extern char SubvolName[];
|
|
extern char ConfigName[];
|
|
extern char config_cwd[];
|
|
extern char cmd_line[];
|
|
extern char ConfigFile[];
|
|
extern char syslinux_banner[];
|
|
extern char copyright_str[];
|
|
|
|
extern const size_t __syslinux_shuffler_size;
|
|
|
|
static inline size_t syslinux_shuffler_size(void)
|
|
{
|
|
return __syslinux_shuffler_size;
|
|
}
|
|
|
|
/*
|
|
* Mark symbols that are only used by BIOS as __weak until we can move
|
|
* all references out of the generic (EFI + BIOS) code and into
|
|
* BIOS-specific code.
|
|
*/
|
|
extern __weak uint16_t BIOSName;
|
|
extern __weak char KernelName[];
|
|
extern __weak char StackBuf[];
|
|
|
|
extern uint8_t KbdMap[256];
|
|
|
|
extern const uint16_t IPAppends[];
|
|
extern size_t numIPAppends;
|
|
|
|
extern uint16_t SerialPort;
|
|
extern uint16_t BaudDivisor;
|
|
extern uint8_t FlowOutput;
|
|
extern uint8_t FlowInput;
|
|
extern uint8_t FlowIgnore;
|
|
|
|
extern uint8_t ScrollAttribute;
|
|
extern uint16_t DisplayCon;
|
|
|
|
/* diskstart.inc isolinux.asm*/
|
|
extern void getlinsec(void);
|
|
|
|
/* pm.inc */
|
|
void core_pm_null_hook(void);
|
|
extern void (*core_pm_hook)(void);
|
|
|
|
/* getc.inc */
|
|
extern void core_open(void);
|
|
|
|
/* adv.inc */
|
|
extern void adv_init(void);
|
|
extern void adv_write(void);
|
|
|
|
/* hello.c */
|
|
extern void myputs(const char*);
|
|
|
|
/* idle.c */
|
|
extern int (*idle_hook_func)(void);
|
|
extern void __idle(void);
|
|
extern void reset_idle(void);
|
|
|
|
/* mem/malloc.c, mem/free.c, mem/init.c */
|
|
extern void *lmalloc(size_t);
|
|
extern void *pmapi_lmalloc(size_t);
|
|
extern void *zalloc(size_t);
|
|
extern void free(void *);
|
|
extern void mem_init(void);
|
|
|
|
/* sysappend.c */
|
|
extern void print_sysappend(void);
|
|
extern const char *sysappend_strings[SYSAPPEND_MAX];
|
|
extern uint32_t SysAppends;
|
|
extern void sysappend_set_uuid(const uint8_t *uuid);
|
|
extern void sysappend_set_fs_uuid(void);
|
|
|
|
void __cdecl core_intcall(uint8_t, const com32sys_t *, com32sys_t *);
|
|
void __cdecl core_farcall(uint32_t, const com32sys_t *, com32sys_t *);
|
|
int __cdecl core_cfarcall(uint32_t, const void *, uint32_t);
|
|
|
|
extern const com32sys_t zero_regs;
|
|
void call16(void (*)(void), const com32sys_t *, com32sys_t *);
|
|
|
|
/*
|
|
* __lowmem is in the low 1 MB; __bss16 in the low 64K
|
|
*/
|
|
#ifdef __SYSLINUX_CORE__ /* Not supported in modules */
|
|
# define __lowmem __attribute__((nocommon,section(".lowmem")))
|
|
# define __bss16 __attribute__((nocommon,section(".bss16")))
|
|
#endif
|
|
|
|
/*
|
|
* Helper routine to return a specific set of flags
|
|
*/
|
|
static inline void set_flags(com32sys_t *regs, uint32_t flags)
|
|
{
|
|
uint32_t eflags;
|
|
|
|
eflags = regs->eflags.l;
|
|
eflags &= ~(EFLAGS_CF|EFLAGS_PF|EFLAGS_AF|EFLAGS_ZF|EFLAGS_SF|EFLAGS_OF);
|
|
eflags |= flags;
|
|
regs->eflags.l = eflags;
|
|
}
|
|
|
|
extern int start_ldlinux(int argc, char **argv);
|
|
extern int create_args_and_load(char *);
|
|
|
|
extern void write_serial(char data);
|
|
extern void writestr(char *str);
|
|
extern void writechr(char data);
|
|
extern void crlf(void);
|
|
extern int pollchar(void);
|
|
extern char getchar(char *hi);
|
|
extern uint8_t kbd_shiftflags(void);
|
|
static inline bool shift_is_held(void)
|
|
{
|
|
return !!(kbd_shiftflags() & 0x5d); /* Caps/Scroll/Alt/Shift */
|
|
}
|
|
static inline bool ctrl_is_held(void)
|
|
{
|
|
return !!(kbd_shiftflags() & 0x04); /* Only Ctrl */
|
|
}
|
|
|
|
extern void cleanup_hardware(void);
|
|
extern void sirq_cleanup(void);
|
|
extern void adjust_screen(void);
|
|
|
|
extern void execute(const char *cmdline, uint32_t type, bool sysappend);
|
|
extern void load_kernel(const char *cmdline);
|
|
|
|
extern void dmi_init(void);
|
|
|
|
extern void do_sysappend(char *buf);
|
|
|
|
extern void load_env32(com32sys_t *regs);
|
|
|
|
#endif /* CORE_H */
|