4 #include <klibc/compiler.h>
13 #include <syslinux/pmapi.h>
14 #include <syslinux/sysappend.h>
18 extern char core_xfer_buf
[65536];
19 extern char core_cache_buf
[65536];
20 extern char trackbuf
[];
21 extern char CurrentDirName
[];
22 extern char SubvolName
[];
23 extern char ConfigName
[];
24 extern char config_cwd
[];
25 extern char cmd_line
[];
26 extern char ConfigFile
[];
27 extern char syslinux_banner
[];
28 extern char copyright_str
[];
30 extern const size_t __syslinux_shuffler_size
;
32 static inline size_t syslinux_shuffler_size(void)
34 return __syslinux_shuffler_size
;
38 * Mark symbols that are only used by BIOS as __weak until we can move
39 * all references out of the generic (EFI + BIOS) code and into
42 extern __weak
uint16_t BIOSName
;
43 extern __weak
char KernelName
[];
44 extern __weak
char StackBuf
[];
46 extern uint8_t KbdMap
[256];
48 extern const uint16_t IPAppends
[];
49 extern size_t numIPAppends
;
51 extern uint16_t SerialPort
;
52 extern uint16_t BaudDivisor
;
53 extern uint8_t FlowOutput
;
54 extern uint8_t FlowInput
;
55 extern uint8_t FlowIgnore
;
57 extern uint8_t ScrollAttribute
;
58 extern uint16_t DisplayCon
;
60 /* diskstart.inc isolinux.asm*/
61 extern void getlinsec(void);
64 void core_pm_null_hook(void);
65 extern void (*core_pm_hook
)(void);
68 extern void core_open(void);
71 extern void adv_init(void);
72 extern void adv_write(void);
75 extern void myputs(const char*);
78 extern int (*idle_hook_func
)(void);
79 extern void __idle(void);
80 extern void reset_idle(void);
82 /* mem/malloc.c, mem/free.c, mem/init.c */
83 extern void *lmalloc(size_t);
84 extern void *pmapi_lmalloc(size_t);
85 extern void *zalloc(size_t);
86 extern void free(void *);
87 extern void mem_init(void);
90 extern void print_sysappend(void);
91 extern const char *sysappend_strings
[SYSAPPEND_MAX
];
92 extern uint32_t SysAppends
;
93 extern void sysappend_set_uuid(const uint8_t *uuid
);
95 void __cdecl
core_intcall(uint8_t, const com32sys_t
*, com32sys_t
*);
96 void __cdecl
core_farcall(uint32_t, const com32sys_t
*, com32sys_t
*);
97 int __cdecl
core_cfarcall(uint32_t, const void *, uint32_t);
99 extern const com32sys_t zero_regs
;
100 void call16(void (*)(void), const com32sys_t
*, com32sys_t
*);
103 * __lowmem is in the low 1 MB; __bss16 in the low 64K
105 #ifdef __SYSLINUX_CORE__ /* Not supported in modules */
106 # define __lowmem __attribute__((nocommon,section(".lowmem")))
107 # define __bss16 __attribute__((nocommon,section(".bss16")))
111 * Helper routine to return a specific set of flags
113 static inline void set_flags(com32sys_t
*regs
, uint32_t flags
)
117 eflags
= regs
->eflags
.l
;
118 eflags
&= ~(EFLAGS_CF
|EFLAGS_PF
|EFLAGS_AF
|EFLAGS_ZF
|EFLAGS_SF
|EFLAGS_OF
);
120 regs
->eflags
.l
= eflags
;
123 extern int start_ldlinux(int argc
, char **argv
);
124 extern int create_args_and_load(char *);
126 extern void write_serial(char data
);
127 extern void writestr(char *str
);
128 extern void writechr(char data
);
129 extern void crlf(void);
130 extern int pollchar(void);
131 extern char getchar(char *hi
);
133 extern void cleanup_hardware(void);
134 extern void sirq_cleanup(void);
135 extern void adjust_screen(void);
137 extern void execute(const char *cmdline
, uint32_t type
, bool sysappend
);
138 extern void load_kernel(const char *cmdline
);
140 extern void dmi_init(void);
142 extern void do_sysappend(char *buf
);
144 extern void load_env32(com32sys_t
*regs
);