mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 20:37:34 +00:00
Kernel: Reorganize Arch/x86 directory to Arch/x86_64 after i686 removal
No functional change.
This commit is contained in:
parent
5ff318cf3a
commit
91db482ad3
129 changed files with 482 additions and 1116 deletions
51
Kernel/Arch/x86_64/ISABus/SerialDevice.cpp
Normal file
51
Kernel/Arch/x86_64/ISABus/SerialDevice.cpp
Normal file
|
@ -0,0 +1,51 @@
|
|||
/*
|
||||
* Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <Kernel/Devices/DeviceManagement.h>
|
||||
#include <Kernel/Devices/SerialDevice.h>
|
||||
#include <Kernel/IOWindow.h>
|
||||
#include <Kernel/Sections.h>
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
#define SERIAL_COM1_ADDR 0x3F8
|
||||
#define SERIAL_COM2_ADDR 0x2F8
|
||||
#define SERIAL_COM3_ADDR 0x3E8
|
||||
#define SERIAL_COM4_ADDR 0x2E8
|
||||
|
||||
UNMAP_AFTER_INIT NonnullLockRefPtr<SerialDevice> SerialDevice::must_create(size_t com_number)
|
||||
{
|
||||
// FIXME: This way of blindly doing release_value is really not a good thing, find
|
||||
// a way to propagate errors back.
|
||||
LockRefPtr<SerialDevice> serial_device;
|
||||
switch (com_number) {
|
||||
case 0: {
|
||||
auto io_window = IOWindow::create_for_io_space(IOAddress(SERIAL_COM1_ADDR), 16).release_value_but_fixme_should_propagate_errors();
|
||||
serial_device = DeviceManagement::try_create_device<SerialDevice>(move(io_window), 64).release_value();
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
auto io_window = IOWindow::create_for_io_space(IOAddress(SERIAL_COM2_ADDR), 16).release_value_but_fixme_should_propagate_errors();
|
||||
serial_device = DeviceManagement::try_create_device<SerialDevice>(move(io_window), 65).release_value();
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
auto io_window = IOWindow::create_for_io_space(IOAddress(SERIAL_COM3_ADDR), 16).release_value_but_fixme_should_propagate_errors();
|
||||
serial_device = DeviceManagement::try_create_device<SerialDevice>(move(io_window), 66).release_value();
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
auto io_window = IOWindow::create_for_io_space(IOAddress(SERIAL_COM4_ADDR), 16).release_value_but_fixme_should_propagate_errors();
|
||||
serial_device = DeviceManagement::try_create_device<SerialDevice>(move(io_window), 67).release_value();
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return serial_device.release_nonnull();
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue