Skip to content

Commit b119e79

Browse files
committed
solo5: Move softreset to platforms, fix some solo5net issues
1 parent d121d73 commit b119e79

7 files changed

Lines changed: 15 additions & 14 deletions

File tree

src/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ set(OS_OBJECTS
3939
kernel/elf.cpp kernel/terminal.cpp kernel/terminal_disk.cpp
4040
kernel/vga.cpp kernel/context.cpp kernel/context_asm.asm
4141
kernel/fiber.cpp kernel/tls.cpp
42-
kernel/profile.cpp kernel/softreset.cpp
42+
kernel/profile.cpp
4343
kernel/timers.cpp kernel/rtc.cpp kernel/rng.cpp kernel/rdrand.cpp
4444
kernel/solo5_manager.cpp
4545
util/memstream.c util/async.cpp util/statman.cpp util/logger.cpp util/sha1.cpp

src/drivers/solo5net.cpp

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@
2828
extern "C" {
2929
#include <solo5.h>
3030
}
31-
31+
static const uint32_t NUM_BUFFERS = 1024;
3232
using namespace net;
3333

3434
const char* Solo5Net::driver_name() const { return "Solo5Net"; }
3535

3636
Solo5Net::Solo5Net()
3737
: Link(Link_protocol{{this, &Solo5Net::transmit}, mac()},
38-
2048u, sizeof(net::Packet) + MTU()),
38+
NUM_BUFFERS, 2048u), // don't change this
3939
packets_rx_{Statman::get().create(Stat::UINT64, device_name() + ".packets_rx").get_uint64()},
4040
packets_tx_{Statman::get().create(Stat::UINT64, device_name() + ".packets_tx").get_uint64()}
4141
{
@@ -70,32 +70,29 @@ void Solo5Net::transmit(net::Packet_ptr pckt)
7070
}
7171
}
7272

73-
std::unique_ptr<Packet>
74-
Solo5Net::create_packet(int link_offset)
73+
net::Packet_ptr Solo5Net::create_packet(int link_offset)
7574
{
7675
auto buffer = bufstore().get_buffer();
7776
auto* pckt = (net::Packet*) buffer.addr;
7877

7978
new (pckt) net::Packet(link_offset, 0, packet_len(), buffer.bufstore);
8079
return net::Packet_ptr(pckt);
8180
}
82-
83-
std::unique_ptr<Packet>
84-
Solo5Net::recv_packet()
81+
net::Packet_ptr Solo5Net::recv_packet()
8582
{
8683
auto buffer = bufstore().get_buffer();
8784
auto* pckt = (net::Packet*) buffer.addr;
88-
new (pckt) net::Packet(0, MTU(), packet_len(), &bufstore());
89-
uint8_t *buf = pckt->buf();
85+
new (pckt) net::Packet(0, MTU(), packet_len(), buffer.bufstore);
9086
// Populate the packet buffer with new packet, if any
9187
int size = MTU();
92-
if (solo5_net_read_sync(buf, &size) == 0) {
88+
if (solo5_net_read_sync(pckt->buf(), &size) == 0) {
9389
// Adjust packet size to match received data
9490
if (size) {
9591
pckt->set_data_end(size);
9692
return net::Packet_ptr(pckt);
9793
}
9894
}
95+
bufstore().release(buffer.addr);
9996
return nullptr;
10097
}
10198

src/kernel/profile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
#include <profile>
1919
#include <common>
20-
#include "../platform/x86_pc/pit.hpp"
20+
//#include "../platform/x86_pc/pit.hpp"
2121
#include <kernel/cpuid.hpp>
2222
#include <kernel/elf.hpp>
2323
#include <kernel/irq_manager.hpp>
@@ -62,7 +62,7 @@ struct Sampler
6262

6363
void begin() {
6464
// gather samples repeatedly over single period
65-
x86::PIT::forever(gather_stack_sampling);
65+
//x86::PIT::forever(gather_stack_sampling);
6666
}
6767
void add(void* current, void* ra)
6868
{

src/platform/x86_nano/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ set(PLATFORM_OBJECTS
1010
../x86_pc/serial1.cpp
1111
../x86_pc/os.cpp
1212
../x86_pc/block.cpp
13-
../../kernel/softreset.cpp
13+
../x86_pc/softreset.cpp
1414
platform.cpp
1515
kernel_start.cpp
1616
)

src/platform/x86_pc/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ set(X86_PC_OBJECTS
1515
cpu_freq_sampling.cpp
1616
serial1.cpp
1717
pic.cpp
18+
softreset.cpp
1819
)
1920

2021
add_custom_command(

src/platform/x86_solo5/os.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -306,3 +306,6 @@ void OS::block(){
306306
// Decrement level
307307
*blocking_level -= 1;
308308
}
309+
310+
extern "C"
311+
void __os_store_soft_reset(void*, size_t) {}

0 commit comments

Comments
 (0)