2
This commit is contained in:
parent
d0803c45bb
commit
188f570f9f
@ -40,7 +40,11 @@ extern void KABI hal_set_timer_timeout(uint64_t millis);
|
||||
|
||||
extern void KABI hal_halt_cpu();
|
||||
|
||||
extern uint32_t KABI hal_get_current_core();
|
||||
extern int32_t KABI hal_get_current_core();
|
||||
|
||||
extern void KABI hal_set_irql(irql_t irql);
|
||||
|
||||
extern irql_t KABI hal_get_irql();
|
||||
|
||||
extern void KABI hal_issue_interrupt(uint32_t core_id, uint32_t vector);
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
; Distributed under GPL license
|
||||
; See COPYING under root for details
|
||||
|
||||
%include "hal_addr.inc"
|
||||
%include "addr.inc"
|
||||
|
||||
MULTIBOOT_TAG_ALIGNMENT equ 8
|
||||
MULTIBOOT_HEADER_ALIGNMENT equ 8
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "intr.h"
|
||||
#include "hal_arch.h"
|
||||
#include "arch.h"
|
||||
#include "s_atomic.h"
|
||||
#include "s_boot.h"
|
||||
#include "s_context.h"
|
||||
@ -28,11 +28,6 @@ irql_t KABI ke_set_irql(irql_t irql)
|
||||
return old_irql;
|
||||
}
|
||||
|
||||
irql_t KABI ke_get_irql()
|
||||
{
|
||||
return (irql_t)hal_read_cr8();
|
||||
}
|
||||
|
||||
void KABI ke_halt_cpu()
|
||||
{
|
||||
hal_halt_cpu();
|
||||
|
@ -6,14 +6,14 @@
|
||||
#include "print.h"
|
||||
#include "mem.h"
|
||||
#include "intr.h"
|
||||
#include "hal_arch.h"
|
||||
#include "arch.h"
|
||||
#include "sxtdlib.h"
|
||||
#include "s_boot.h"
|
||||
|
||||
extern char HAL_KERNEL_START_VADDR[];
|
||||
extern char HAL_KERNEL_END_VADDR[];
|
||||
|
||||
static void KABI _hal_obtain_cpu_info(boot_info_t *hal_info)
|
||||
static void KABI halp_obtain_cpu_info(boot_info_t *hal_info)
|
||||
{
|
||||
if(hal_info == NULL)
|
||||
return;
|
||||
@ -42,7 +42,7 @@ void KABI hal_main(void *m_info)
|
||||
boot_info->krnl_end = (uint64_t)HAL_KERNEL_END_VADDR;
|
||||
|
||||
// obtain cpu info
|
||||
_hal_obtain_cpu_info(boot_info);
|
||||
halp_obtain_cpu_info(boot_info);
|
||||
|
||||
// init interrupt
|
||||
if(hal_interrupt_init() != 0)
|
||||
|
@ -3,7 +3,7 @@
|
||||
* See COPYING under root for details
|
||||
*/
|
||||
|
||||
#include "hal_arch.h"
|
||||
#include "arch.h"
|
||||
#include "intr.h"
|
||||
#include "print.h"
|
||||
#include "mem.h"
|
||||
@ -135,7 +135,7 @@ void KABI hal_exception_dispatcher(uint64_t exc_vec, hal_intr_context_t* context
|
||||
return;
|
||||
}
|
||||
|
||||
static void KABI _hal_populate_idt()
|
||||
static void KABI halp_populate_idt()
|
||||
{
|
||||
hal_set_interrupt_handler(0, hal_interrupt_handler_0);
|
||||
hal_set_interrupt_handler(1, hal_interrupt_handler_1);
|
||||
@ -426,7 +426,7 @@ int32_t KABI hal_interrupt_init(void)
|
||||
}
|
||||
|
||||
// hook asm interrupt handlers
|
||||
_hal_populate_idt();
|
||||
halp_populate_idt();
|
||||
|
||||
hal_flush_idt(&_idt_ptrs[coreid]);
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
#include "g_type.h"
|
||||
#include "mem.h"
|
||||
#include "salloc.h"
|
||||
#include "hal_arch.h"
|
||||
#include "arch.h"
|
||||
#include "intr.h"
|
||||
|
||||
static uint8_t _gdts[HAL_CORE_COUNT][GDT_ENTRY_NUM * GDT_ENTRY_SIZE];
|
||||
|
@ -9,18 +9,18 @@
|
||||
|
||||
static uint64_t text_pos;
|
||||
|
||||
void KABI hal_print_init()
|
||||
static void KABI hal_print_init()
|
||||
{
|
||||
text_pos = 0;
|
||||
}
|
||||
|
||||
void KABI _hal_print_scroll()
|
||||
static void KABI halp_print_scroll()
|
||||
{
|
||||
lb_mem_move((void *) (0xb8000 + get_pos(1, 0) * 2), (void *) (0xb8000 + get_pos(0, 0) * 2), (80 * 24) * 2);
|
||||
return;
|
||||
}
|
||||
|
||||
void KABI _hal_print_str(char const *str)
|
||||
static void KABI halp_print_str(char const *str)
|
||||
{
|
||||
if(str == NULL)
|
||||
return;
|
||||
@ -32,7 +32,7 @@ void KABI _hal_print_str(char const *str)
|
||||
if(text_pos > 80 * 25 - 1)
|
||||
{
|
||||
//can't hold
|
||||
_hal_print_scroll();
|
||||
halp_print_scroll();
|
||||
lb_mem_set((void *) (0xb8000 + 80 * 24 * 2), 0, 80 * 2); // clear last row
|
||||
text_pos = 80 * 24;
|
||||
}
|
||||
@ -43,7 +43,7 @@ void KABI _hal_print_str(char const *str)
|
||||
if (text_pos > 80 * 25 - 1)
|
||||
{
|
||||
//can't hold
|
||||
_hal_print_scroll();
|
||||
halp_print_scroll();
|
||||
text_pos = 80 * 24;
|
||||
}
|
||||
*((char*)(0xb8000) + text_pos*2) = *str;
|
||||
@ -55,7 +55,7 @@ void KABI _hal_print_str(char const *str)
|
||||
return;
|
||||
}
|
||||
|
||||
void KABI _hal_print_uint(uint64_t number)
|
||||
static void KABI halp_print_uint(uint64_t number)
|
||||
{
|
||||
char arr[21]; // do not need to initialize
|
||||
arr[20] = 0; //zero-terminated
|
||||
@ -70,11 +70,11 @@ void KABI _hal_print_uint(uint64_t number)
|
||||
if (number == 0)
|
||||
break;
|
||||
}
|
||||
_hal_print_str(&(arr[index + 1]));
|
||||
halp_print_str(&(arr[index + 1]));
|
||||
return;
|
||||
}
|
||||
|
||||
void KABI _hal_print_int(int64_t number)
|
||||
static void KABI halp_print_int(int64_t number)
|
||||
{
|
||||
char arr[21]; // do not need to initialize
|
||||
arr[20] = 0; //zero-terminated
|
||||
@ -99,11 +99,11 @@ void KABI _hal_print_int(int64_t number)
|
||||
{
|
||||
arr[index--] = '-';
|
||||
}
|
||||
_hal_print_str(&(arr[index + 1]));
|
||||
halp_print_str(&(arr[index + 1]));
|
||||
return;
|
||||
}
|
||||
|
||||
void KABI _hal_print_hex(uint64_t number, uint64_t capital)
|
||||
static void KABI halp_print_hex(uint64_t number, uint64_t capital)
|
||||
{
|
||||
char const lookup_table_cap[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
|
||||
char const lookup_table[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
|
||||
@ -121,7 +121,7 @@ void KABI _hal_print_hex(uint64_t number, uint64_t capital)
|
||||
if (number == 0)
|
||||
break;
|
||||
}
|
||||
_hal_print_str(&(arr[index + 1]));
|
||||
halp_print_str(&(arr[index + 1]));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -146,7 +146,7 @@ void KABI hal_printf(char const *format, ...)
|
||||
if (*format != '%')
|
||||
{
|
||||
buf[0] = *format;
|
||||
_hal_print_str(buf);
|
||||
halp_print_str(buf);
|
||||
continue;
|
||||
}
|
||||
format++;
|
||||
@ -154,36 +154,36 @@ void KABI hal_printf(char const *format, ...)
|
||||
{
|
||||
case 'd':
|
||||
d = va_arg(args, int64_t);
|
||||
_hal_print_int(d);
|
||||
halp_print_int(d);
|
||||
break;
|
||||
case 'u':
|
||||
u = va_arg(args, uint64_t);
|
||||
_hal_print_uint(u);
|
||||
halp_print_uint(u);
|
||||
break;
|
||||
case 's':
|
||||
s = va_arg(args, char *);
|
||||
_hal_print_str(s);
|
||||
halp_print_str(s);
|
||||
break;
|
||||
case 'c':
|
||||
c = va_arg(args, int64_t);
|
||||
buf[0] = c;
|
||||
_hal_print_str(buf);
|
||||
halp_print_str(buf);
|
||||
break;
|
||||
case 'x':
|
||||
u = va_arg(args, uint64_t);
|
||||
_hal_print_hex(u, 0);
|
||||
halp_print_hex(u, 0);
|
||||
break;
|
||||
case 'X':
|
||||
u = va_arg(args, uint64_t);
|
||||
_hal_print_hex(u, 1);
|
||||
halp_print_hex(u, 1);
|
||||
break;
|
||||
case '%':
|
||||
buf[0] = '%';
|
||||
_hal_print_str(buf);
|
||||
halp_print_str(buf);
|
||||
break;
|
||||
default:
|
||||
buf[0] = '%';
|
||||
_hal_print_str(buf);
|
||||
halp_print_str(buf);
|
||||
format--;
|
||||
break;
|
||||
}
|
||||
|
@ -9,4 +9,8 @@ irql_t KABI ke_raise_irql(irql_t irql);
|
||||
|
||||
irql_t KABI ke_lower_irql(irql_t irql);
|
||||
|
||||
int KABI ke_get_current_core();
|
||||
|
||||
irql_t KABI ke_get_irql();
|
||||
|
||||
#endif
|
@ -4,11 +4,22 @@
|
||||
irql_t KABI ke_raise_irql(irql_t irql)
|
||||
{
|
||||
ke_assert(ke_get_irql() <= irql);
|
||||
return ke_set_irql(irql);
|
||||
return hal_set_irql(irql);
|
||||
}
|
||||
|
||||
irql_t KABI ke_lower_irql(irql_t irql)
|
||||
{
|
||||
ke_assert(ke_get_irql() >= irql);
|
||||
return ke_set_irql(irql);
|
||||
irql_t old_irql = ke_get_irql();
|
||||
ke_assert(old_irql >= irql);
|
||||
return hal_set_irql(irql);
|
||||
}
|
||||
|
||||
irql_t KABI ke_get_irql()
|
||||
{
|
||||
return hal_get_irql();
|
||||
}
|
||||
|
||||
int KABI ke_get_current_core()
|
||||
{
|
||||
return hal_get_current_core();
|
||||
}
|
Loading…
Reference in New Issue
Block a user