100 pr_info(
"Keyboard scancode: %x", scancode);
128 const bool do_mapped_check =
current_cpu->mm_context;
131 pr_warn(
" no mm context available, mapping checks are disabled (early-boot panic?)");
135 pr_emerg(
" mm lock is already held, stack trace may be corrupted");
138 for (
u32 i = 0; frame; i++)
140#define TRACE_FMT " %-3d [" PTR_FMT "]: "
157 else if (frame == frame->
bp)
166 else if (frame->
ip == 0)
171 else if (frame->
ip < 1
KB)
175 else if (can_access_vmaps)
181 if (vmap && vmap->
io)
205 pr_info(
"-- end of stack trace");
211 __asm__(
"mov %%rbp, %0" :
"=r"(frame));
231#if MOS_DEBUG_FEATURE(x86_startup)
234#define do_print_cpu_feature(feature) \
235 if (cpu_has_feature(CPU_FEATURE_##feature)) \
236 pr_cont(" " #feature);
239#undef do_print_cpu_feature
253 pr_dinfo2(x86_startup,
"Parsing ACPI tables...");
262 pr_dinfo2(x86_startup,
"Searching for RSDP in EBDA...");
266 pr_dinfo2(x86_startup,
"Searching for RSDP in BIOS memory region...");
278 pr_dinfo2(x86_startup,
"Initializing APICs...");
void acpi_parse_rsdt(const acpi_rsdp_t *rsdp)
const acpi_rsdp_t * acpi_find_rsdp(ptr_t start, size_t size)
acpi_rsdp_v2_t acpi_rsdp_t
void x86_unblock_aps(void)
should_inline void ioapic_enable_interrupt(u32 irq, u32 lapic_id)
void lapic_set_timer(u32 initial_count)
should_inline u8 lapic_get_id(void)
#define MOS_ASSERT_X(cond, msg,...)
#define MOS_PATH_MAX_LENGTH
serial_baudrate_t baudrate_divisor
serial_charlength_t char_length
serial_stopbits_t stop_bits
void write_register(serial_register_t reg, u8 data) override
int write_byte(u8 data) override
u8 read_register(serial_register_t reg) override
x86SerialDevice(x86ComPort port)
bool get_data_ready() override
void console_register(Console *con)
@ CONSOLE_CAP_READ
console supports read
void x86_cpu_initialise_caps(void)
void x86_cpu_setup_xsave_area(void)
#define FOR_ALL_CPU_FEATURES(M)
void x86_init_percpu_gdt()
void x86_init_percpu_tss()
void x86_init_percpu_idt(void)
vmap_t * vmap_obtain(MMContext *mmctx, ptr_t vaddr, size_t *out_offset)
Get the vmap object for a virtual address.
ptr_t mm_get_phys_addr(MMContext *ctx, ptr_t vaddr)
pmm_region_t * pmm_find_reserved_region(ptr_t needle)
Find a region in the physical memory manager.
void interrupt_handler_register(u32 irq, irq_serve_t handler, void *data)
Register an interrupt handler.
void io_get_name(const io_t *io, char *buf, size_t size)
void x86_paging_setup(void)
#define mos_panic(fmt,...)
should_inline void port_outb(u16 port, u8 value)
should_inline u8 port_inb(u16 port)
#define pr_info2(fmt,...)
#define pr_emerg(fmt,...)
#define pr_dinfo2(feat, fmt,...)
bool rtc_irq_handler(u32 irq, void *data)
void reschedule(void)
reschedule.
bool serial_console_irq_handler(u32 irq, void *data)
should_inline bool spinlock_is_locked(const spinlock_t *lock)
#define spinlock_acquire(lock)
#define spinlock_release(lock)