Skip to content

Commit

Permalink
feat: aarch64 _putchar
Browse files Browse the repository at this point in the history
Signed-off-by: Zone.N <[email protected]>
  • Loading branch information
MRNIU committed Jan 8, 2025
1 parent be0ca63 commit 4aa5f92
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
14 changes: 7 additions & 7 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@ repos:
- id: clang-format
args:
- --style=file
- id: clang-tidy
args:
- --checks=.clang-tidy
- -p=/root/SimpleKernel/build_aarch64/compiler_commands.json
- -extra-arg=--std=c++2b
- --fix
- --header-filter=^(/root/SimpleKernel/build_aarch64/src/).*
# - id: clang-tidy
# args:
# - --checks=.clang-tidy
# - -p=/root/SimpleKernel/build_aarch64/compiler_commands.json
# - -extra-arg=--std=c++2b
# - --fix
# - --header-filter=^(/root/SimpleKernel/build_aarch64/src/).*
# - --exclude-header-filter=^(?/root/SimpleKernel/build_aarch64/src/arch/x86_64|/root/SimpleKernel/build_aarch64/src/arch/aarch64).*
# - id: clang-tidy
# args:
Expand Down
20 changes: 12 additions & 8 deletions src/kernel/arch/aarch64/arch_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,13 @@
#include "sk_cstdio"

// printf_bare_metal 基本输出实现
namespace {
Pl011* pl011 = nullptr;
}
extern "C" void _putchar(char character) {
static auto* kUartAddr = (uint8_t*)0x09000000;
*kUartAddr = character;
if (pl011) {
pl011->PutChar(character);
}
}

BasicInfo::BasicInfo(uint32_t argc, const uint8_t* argv) {
Expand All @@ -49,21 +53,21 @@ BasicInfo::BasicInfo(uint32_t argc, const uint8_t* argv) {
}

auto ArchInit(uint32_t argc, const uint8_t* argv) -> uint32_t {
(void)argc;
(void)argv;

// 初始化 FPU
cpu_io::SetupFpu();

Singleton<KernelFdt>::GetInstance() = KernelFdt(0x40000000);

Singleton<BasicInfo>::GetInstance() = BasicInfo(argc, argv);
Singleton<BasicInfo>::GetInstance().core_count++;
sk_std::cout << Singleton<BasicInfo>::GetInstance();

auto [serial_base, serial_size] =
Singleton<KernelFdt>::GetInstance().GetSerial();
auto uart = Pl011(serial_base);

static auto uart = Pl011(serial_base);
pl011 = &uart;
sk_std::cout << Singleton<BasicInfo>::GetInstance();

uart.PutChar('H');
uart.PutChar('e');
uart.PutChar('l');
Expand All @@ -77,7 +81,7 @@ auto ArchInit(uint32_t argc, const uint8_t* argv) -> uint32_t {
uart.PutChar('!');
uart.PutChar('\n');

__asm__ volatile("sev");
// __asm__ volatile("sev");

return 0;
}
Expand Down

0 comments on commit 4aa5f92

Please sign in to comment.