Skip to content

Commit

Permalink
Revert Kernel Ring Buffer Changes (#14244)
Browse files Browse the repository at this point in the history
* Revert "#11790: Use ring buffer for kernel dispatch"

This reverts commit e8e25d1.

* Revert "#11790: Fix alignment of launch_msg members"

This reverts commit 0ba602f.

* Revert "#11791: Elf xipification pieces"

This reverts commit a97ee9a.
  • Loading branch information
tt-aho authored Oct 25, 2024
1 parent 01b6564 commit e966f77
Show file tree
Hide file tree
Showing 37 changed files with 167 additions and 637 deletions.
10 changes: 3 additions & 7 deletions tests/tt_metal/tt_metal/test_compile_sets_kernel_binaries.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ int main(int argc, char **argv) {
dm_class_idx,
0,
get_latest_kernel_binary_path(mask, riscv0_kernel));
ll_api::memory brisc_binary = llrt::get_risc_binary(brisc_hex_path, 0, ll_api::memory::PackSpans::PACK, ll_api::memory::Relocate::XIP);
ll_api::memory brisc_binary = llrt::get_risc_binary(brisc_hex_path, 0, llrt::PackSpans::PACK);
TT_FATAL(
brisc_binary == brisc_binaries.at(mask).at(0),
"Expected saved BRISC binary to be the same as binary in persistent cache");
Expand All @@ -212,11 +212,7 @@ int main(int argc, char **argv) {
dm_class_idx,
1,
get_latest_kernel_binary_path(mask, riscv1_kernel));
ll_api::memory::Relocate relo_type =
(device->arch() == tt::ARCH::GRAYSKULL || device->arch() == tt::ARCH::WORMHOLE_B0) ?
ll_api::memory::Relocate::NONE : ll_api::memory::Relocate::XIP;

ll_api::memory ncrisc_binary = llrt::get_risc_binary(ncrisc_hex_path, 1, ll_api::memory::PackSpans::PACK, relo_type);
ll_api::memory ncrisc_binary = llrt::get_risc_binary(ncrisc_hex_path, 1, llrt::PackSpans::PACK);
TT_FATAL(
ncrisc_binary == ncrisc_binaries.at(mask).at(0),
"Expected saved NCRISC binary to be the same as binary in persistent cache");
Expand All @@ -227,7 +223,7 @@ int main(int argc, char **argv) {
compute_class_idx,
trisc_id,
get_latest_kernel_binary_path(mask, compute_kernel));
ll_api::memory trisc_binary = llrt::get_risc_binary(trisc_hex_path, 2, ll_api::memory::PackSpans::PACK, ll_api::memory::Relocate::XIP);
ll_api::memory trisc_binary = llrt::get_risc_binary(trisc_hex_path, 2, llrt::PackSpans::PACK);
TT_FATAL(
trisc_binary == compute_binaries.at(mask).at(trisc_id),
"Expected saved TRISC binary for {} to be the same as binary in persistent cache", trisc_id_str);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ TEST_F(DeviceFixture, TestCreateCircularBufferAtValidIndices) {
auto cb = CreateCircularBuffer(program, cr_set, config);

for (unsigned int id = 0; id < num_devices_; id++) {
detail::CompileProgram(devices_.at(id), program);
program.finalize(devices_.at(id));
EXPECT_TRUE(test_cb_config_written_to_core(program, this->devices_.at(id), cr_set, golden_cb_config));
}
Expand Down
6 changes: 4 additions & 2 deletions tt_metal/hostdevcommon/common_runtime_address_map.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@
* This file contains addresses that are visible to both host and device compiled code.
*/

// TODO: move this to the memory manager, make configurable through the API
// Kernel config buffer is WIP
// Size is presently based on the old sizes of the RTAs + CB config + Sems
// plus some extra space freed up in the mem map
constexpr static std::uint32_t L1_KERNEL_CONFIG_BASE = MEM_MAP_END;
constexpr static std::uint32_t L1_KERNEL_CONFIG_SIZE = 69 * 1024;
constexpr static std::uint32_t L1_KERNEL_CONFIG_SIZE = 4 * 1024 + 256 + 128 + 512;

constexpr static std::uint32_t NUM_CIRCULAR_BUFFERS = 32;
constexpr static std::uint32_t UINT32_WORDS_PER_CIRCULAR_BUFFER_CONFIG = 4;
Expand Down
37 changes: 12 additions & 25 deletions tt_metal/hw/firmware/src/brisc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -169,13 +169,13 @@ void set_deassert_addresses() {
#endif
}

void l1_to_ncrisc_iram_copy(uint32_t src_addr, uint16_t size, uint32_t address_offset = 0) {
void l1_to_ncrisc_iram_copy(uint16_t size, uint32_t address_offset = 0) {
#ifdef NCRISC_HAS_IRAM
// Always copy ncrisc even if its size is 0 (save branch)...
// Copy NCRISC firmware from L1 to local IRAM using tensix DMA
tdma_xmov(
TDMA_MOVER0,
src_addr,
(MEM_NCRISC_INIT_IRAM_L1_BASE >> 4) + address_offset,
MEM_MOVER_VIEW_IRAM_BASE_ADDR + address_offset,
size,
XMOV_L1_TO_L0);
Expand Down Expand Up @@ -267,22 +267,16 @@ void init_sync_registers() {
}
}

inline void init_ncrisc_iram() {
#ifdef NCRISC_HAS_IRAM
inline void deassert_ncrisc_trisc() {
// Below sets ncrisc to go so we can wait until it is cleared on first iteration
mailboxes->slave_sync.all = RUN_SYNC_MSG_ALL_SLAVES_DONE;

uint16_t fw_size16 = mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.ncrisc_kernel_size16;
ncrisc_kernel_start_offset16 = fw_size16;

// Copies from L1 to IRAM on chips where NCRISC has IRAM
l1_to_ncrisc_iram_copy(MEM_NCRISC_INIT_IRAM_L1_BASE >> 4, fw_size16);
l1_to_ncrisc_iram_copy(fw_size16);
l1_to_ncrisc_iram_copy_wait();
#endif
}

inline void deassert_ncrisc_trisc() {
// Below sets ncrisc to go so we can wait until it is cleared on first iteration
mailboxes->slave_sync.all = RUN_SYNC_MSG_ALL_SLAVES_DONE;

init_ncrisc_iram();

// Bring ncrisc/triscs out of reset
deassert_all_reset();
Expand Down Expand Up @@ -406,13 +400,8 @@ int main() {
DeviceValidateProfiler(launch_msg_address->kernel_config.enables);
DeviceZoneSetCounter(launch_msg_address->kernel_config.host_assigned_id);
// Copies from L1 to IRAM on chips where NCRISC has IRAM
uint32_t kernel_config_base = firmware_config_init(mailboxes, ProgrammableCoreType::TENSIX, DISPATCH_CLASS_TENSIX_DM0);
int ncrisc_index = static_cast<std::underlying_type<TensixProcessorTypes>::type>(TensixProcessorTypes::DM1);
uint32_t ncrisc_kernel_src_address =
kernel_config_base + launch_msg_address->kernel_config.kernel_text_offset[ncrisc_index];
l1_to_ncrisc_iram_copy(ncrisc_kernel_src_address >> 4,
launch_msg_address->kernel_config.ncrisc_kernel_size16,
ncrisc_kernel_start_offset16);
l1_to_ncrisc_iram_copy(launch_msg_address->kernel_config.ncrisc_kernel_size16, ncrisc_kernel_start_offset16);

// Invalidate the i$ now the kernels have loaded and before running
volatile tt_reg_ptr uint32_t* cfg_regs = core.cfg_regs_base(0);
cfg_regs[RISCV_IC_INVALIDATE_InvalidateAll_ADDR32] = RISCV_IC_BRISC_MASK | RISCV_IC_TRISC_ALL_MASK | RISCV_IC_NCRISC_MASK;
Expand All @@ -434,6 +423,7 @@ int main() {
}
prev_noc_mode = noc_mode;

uint32_t kernel_config_base = firmware_config_init(mailboxes, ProgrammableCoreType::TENSIX, DISPATCH_CLASS_TENSIX_DM0);
uint32_t tt_l1_ptr *cb_l1_base = (uint32_t tt_l1_ptr *)(kernel_config_base +
launch_msg_address->kernel_config.cb_offset);
setup_cb_read_write_interfaces(cb_l1_base, 0, num_cbs_to_early_init, true, true, false);
Expand All @@ -443,13 +433,10 @@ int main() {
WAYPOINT("R");
if (enables & DISPATCH_CLASS_MASK_TENSIX_ENABLE_DM0) {
setup_cb_read_write_interfaces(cb_l1_base, num_cbs_to_early_init, launch_msg_address->kernel_config.max_cb_index, true, true, false);
int index = static_cast<std::underlying_type<TensixProcessorTypes>::type>(TensixProcessorTypes::DM0);
void (*kernel_address)(uint32_t) = (void (*)(uint32_t))
(kernel_config_base + launch_msg_address->kernel_config.kernel_text_offset[index]);
(*kernel_address)((uint32_t)kernel_address);
kernel_init();
RECORD_STACK_USAGE();
} else {
// This was not initialized in the kernel
// This was not initialized in kernel_init
if (noc_mode == DM_DEDICATED_NOC) {
noc_local_state_init(noc_index);
}
Expand Down
5 changes: 2 additions & 3 deletions tt_metal/hw/firmware/src/brisck.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,16 @@
#include <kernel_includes.hpp>

extern uint32_t __kernel_init_local_l1_base[];
extern uint32_t __fw_export_end_text[];

void kernel_launch(uint32_t kernel_base_addr) {
void kernel_launch() {

#if defined(DEBUG_NULL_KERNELS) && !defined(DISPATCH_KERNEL)
#ifdef KERNEL_RUN_TIME
uint64_t end_time = c_tensix_core::read_wall_clock() + KERNEL_RUN_TIME;
while (c_tensix_core::read_wall_clock() < end_time);
#endif
#else
firmware_kernel_common_init((void tt_l1_ptr *)(kernel_base_addr + (uint32_t) __kernel_init_local_l1_base - (uint32_t)__fw_export_end_text));
firmware_kernel_common_init((void tt_l1_ptr *)(__kernel_init_local_l1_base));

if constexpr (NOC_MODE == DM_DEDICATED_NOC) {
noc_local_state_init(NOC_INDEX);
Expand Down
6 changes: 2 additions & 4 deletions tt_metal/hw/firmware/src/erisc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -72,13 +72,10 @@ void __attribute__((noinline)) Application(void) {
launch_msg_t* launch_msg_address = &(mailboxes->launch[launch_msg_rd_ptr]);
DeviceValidateProfiler(launch_msg_address->kernel_config.enables);
DeviceZoneSetCounter(launch_msg_address->kernel_config.host_assigned_id);
// Note that a core may get "GO" w/ enable false to keep its launch_msg's in sync
enum dispatch_core_processor_masks enables = (enum dispatch_core_processor_masks)launch_msg_address->kernel_config.enables;
if (enables & DISPATCH_CLASS_MASK_ETH_DM0) {
WAYPOINT("R");
firmware_config_init(mailboxes, ProgrammableCoreType::ACTIVE_ETH, DISPATCH_CLASS_ETH_DM0);
kernel_init(0);
WAYPOINT("D");
kernel_init();
}
mailboxes->go_message.signal = RUN_MSG_DONE;

Expand All @@ -92,6 +89,7 @@ void __attribute__((noinline)) Application(void) {
// Only executed if watcher is enabled. Ensures that we don't report stale data due to invalid launch messages in the ring buffer
CLEAR_PREVIOUS_LAUNCH_MESSAGE_ENTRY_FOR_WATCHER();
}
WAYPOINT("R");

} else if (go_message_signal == RUN_MSG_RESET_READ_PTR) {
// Reset the launch message buffer read ptr
Expand Down
2 changes: 1 addition & 1 deletion tt_metal/hw/firmware/src/erisck.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

CBInterface cb_interface[NUM_CIRCULAR_BUFFERS];

void kernel_launch(uint32_t) {
void kernel_launch() {
DeviceZoneScopedMainChildN("ERISC-KERNEL");
rtos_context_switch_ptr = (void (*)())RtosTable[0];

Expand Down
6 changes: 2 additions & 4 deletions tt_metal/hw/firmware/src/idle_erisc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

#include "debug/watcher_common.h"
#include "debug/waypoint.h"
#include "debug/dprint.h"
#include "debug/stack_usage.h"

uint8_t noc_index;
Expand Down Expand Up @@ -134,10 +135,7 @@ int main() {

// Run the ERISC kernel
WAYPOINT("R");
int index = static_cast<std::underlying_type<EthProcessorTypes>::type>(EthProcessorTypes::DM0);
void (*kernel_address)(uint32_t) = (void (*)(uint32_t))
(kernel_config_base + mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.kernel_text_offset[index]);
(*kernel_address)((uint32_t)kernel_address);
kernel_init();
RECORD_STACK_USAGE();
WAYPOINT("D");
mailboxes->go_message.signal = RUN_MSG_DONE;
Expand Down
6 changes: 2 additions & 4 deletions tt_metal/hw/firmware/src/idle_erisck.cc
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,10 @@
#include <kernel_includes.hpp>

extern uint32_t __kernel_init_local_l1_base[];
extern uint32_t __fw_export_end_text[];

void kernel_launch(uint32_t kernel_base_addr) {
void kernel_launch() {
DeviceZoneScopedMainChildN("ERISC-KERNEL");

firmware_kernel_common_init((void tt_l1_ptr *)(kernel_base_addr + (uint32_t) __kernel_init_local_l1_base - (uint32_t)__fw_export_end_text));
firmware_kernel_common_init((void tt_l1_ptr *)__kernel_init_local_l1_base);

noc_local_state_init(NOC_INDEX);

Expand Down
18 changes: 4 additions & 14 deletions tt_metal/hw/firmware/src/ncrisc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -91,23 +91,13 @@ int main(int argc, char *argv[]) {
notify_brisc_and_wait();
DeviceZoneScopedMainN("NCRISC-FW");

uint32_t launch_msg_rd_ptr = mailboxes->launch_msg_rd_ptr;
launch_msg_t* launch_msg = &(mailboxes->launch[launch_msg_rd_ptr]);

uint32_t kernel_config_base = firmware_config_init(mailboxes, ProgrammableCoreType::TENSIX, DISPATCH_CLASS_TENSIX_DM1);
uint32_t tt_l1_ptr *cb_l1_base = (uint32_t tt_l1_ptr *)(kernel_config_base +
launch_msg->kernel_config.cb_offset);
setup_cb_read_write_interfaces(cb_l1_base, 0, launch_msg->kernel_config.max_cb_index, true, true, false);
WAYPOINT("R");
mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.cb_offset);
setup_cb_read_write_interfaces(cb_l1_base, 0, mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.max_cb_index, true, true, false);

int index = static_cast<std::underlying_type<TensixProcessorTypes>::type>(TensixProcessorTypes::DM1);
void (*kernel_address)(uint32_t) = (void (*)(uint32_t))
(kernel_config_base + launch_msg->kernel_config.kernel_text_offset[index]);
#ifdef ARCH_BLACKHOLE
(*kernel_address)((uint32_t)kernel_address);
#else
kernel_init((uint32_t)kernel_address);
#endif
WAYPOINT("R");
kernel_init();
RECORD_STACK_USAGE();
WAYPOINT("D");

Expand Down
10 changes: 6 additions & 4 deletions tt_metal/hw/firmware/src/ncrisck.cc
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,8 @@ uint32_t noc_nonposted_atomics_acked[NUM_NOCS];
uint32_t noc_posted_writes_num_issued[NUM_NOCS];

extern uint32_t __kernel_init_local_l1_base[];
extern uint32_t __fw_export_end_text[];

void kernel_launch(uint32_t kernel_base_addr) {
void kernel_launch() {

DeviceZoneScopedMainChildN("NCRISC-KERNEL");
#if defined(DEBUG_NULL_KERNELS) && !defined(DISPATCH_KERNEL)
Expand All @@ -38,8 +37,11 @@ void kernel_launch(uint32_t kernel_base_addr) {
while (c_tensix_core::read_wall_clock() < KERNEL_RUN_TIME);
#endif
#else

firmware_kernel_common_init((void tt_l1_ptr *)(kernel_base_addr + (uint32_t) __kernel_init_local_l1_base - (uint32_t)__fw_export_end_text));
#ifdef ARCH_BLACKHOLE
firmware_kernel_common_init((void tt_l1_ptr *)__kernel_init_local_l1_base);
#else
firmware_kernel_common_init((void tt_l1_ptr *)(MEM_NCRISC_INIT_IRAM_L1_BASE + (uint32_t)__kernel_init_local_l1_base - MEM_NCRISC_IRAM_BASE));
#endif

if constexpr (NOC_MODE == DM_DEDICATED_NOC) {
noc_local_state_init(NOC_INDEX);
Expand Down
18 changes: 6 additions & 12 deletions tt_metal/hw/firmware/src/trisc.cc
Original file line number Diff line number Diff line change
Expand Up @@ -94,27 +94,21 @@ int main(int argc, char *argv[]) {
while (*trisc_run != RUN_SYNC_MSG_GO);
DeviceZoneScopedMainN("TRISC-FW");

uint32_t launch_msg_rd_ptr = mailboxes->launch_msg_rd_ptr;
launch_msg_t* launch_msg = &(mailboxes->launch[launch_msg_rd_ptr]);

uint32_t kernel_config_base = launch_msg->kernel_config.kernel_config_base[ProgrammableCoreType::TENSIX];
uint32_t kernel_config_base = mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.kernel_config_base[ProgrammableCoreType::TENSIX];

#if !defined(UCK_CHLKC_MATH)
uint32_t tt_l1_ptr *cb_l1_base = (uint32_t tt_l1_ptr *)(kernel_config_base +
launch_msg->kernel_config.cb_offset);
setup_cb_read_write_interfaces(cb_l1_base, 0, launch_msg->kernel_config.max_cb_index, cb_init_read, cb_init_write, cb_init_write);
mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.cb_offset);
setup_cb_read_write_interfaces(cb_l1_base, 0, mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.max_cb_index, cb_init_read, cb_init_write, cb_init_write);
#endif

rta_l1_base = (uint32_t tt_l1_ptr *)(kernel_config_base +
launch_msg->kernel_config.rta_offset[DISPATCH_CLASS_TENSIX_COMPUTE].rta_offset);
mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.rta_offset[DISPATCH_CLASS_TENSIX_COMPUTE].rta_offset);
crta_l1_base = (uint32_t tt_l1_ptr *)(kernel_config_base +
launch_msg->kernel_config.rta_offset[DISPATCH_CLASS_TENSIX_COMPUTE].crta_offset);
mailboxes->launch[mailboxes->launch_msg_rd_ptr].kernel_config.rta_offset[DISPATCH_CLASS_TENSIX_COMPUTE].crta_offset);

WAYPOINT("R");
int index = static_cast<std::underlying_type<TensixProcessorTypes>::type>(TensixProcessorTypes::MATH0) + thread_id;
void (*kernel_address)(uint32_t) = (void (*)(uint32_t))
(kernel_config_base + launch_msg->kernel_config.kernel_text_offset[index]);
(*kernel_address)((uint32_t)kernel_address);
kernel_init();
RECORD_STACK_USAGE();
WAYPOINT("D");

Expand Down
5 changes: 2 additions & 3 deletions tt_metal/hw/firmware/src/trisck.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,16 @@ volatile tt_reg_ptr uint * mailbox_base[4] = {
}

extern uint32_t __kernel_init_local_l1_base[];
extern uint32_t __fw_export_end_text[];

void kernel_launch(uint32_t kernel_base_addr)
void kernel_launch()
{
DeviceZoneScopedMainChildN("TRISC-KERNEL");
#if defined(DEBUG_NULL_KERNELS) && !defined(DISPATCH_KERNEL)
#ifdef KERNEL_RUN_TIME
ckernel::wait(KERNEL_RUN_TIME);
#endif
#else
firmware_kernel_common_init((void tt_l1_ptr *)(kernel_base_addr + (uint32_t) __kernel_init_local_l1_base - (uint32_t)__fw_export_end_text));
firmware_kernel_common_init((void tt_l1_ptr *)(__kernel_init_local_l1_base));

#if defined(UCK_CHLKC_UNPACK)
// Make sure DBG_FEATURE_DISABLE register is cleared before every kernel is executed
Expand Down
18 changes: 5 additions & 13 deletions tt_metal/hw/inc/blackhole/dev_mem_map.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,11 @@

/////////////
// Firmware/kernel code holes
#define MEM_BRISC_FIRMWARE_SIZE (5 * 1024)
// TODO: perhaps put NCRISC FW in the scratch area and free 1.5K after init (GS/WH)
#define MEM_NCRISC_FIRMWARE_SIZE 1536
#define MEM_TRISC0_FIRMWARE_SIZE 1536
#define MEM_TRISC1_FIRMWARE_SIZE 1536
#define MEM_TRISC2_FIRMWARE_SIZE 1536

#define MEM_BRISC_KERNEL_SIZE (24 * 1024)
#define MEM_NCRISC_KERNEL_SIZE (24 * 1024)
#define MEM_TRISC0_KERNEL_SIZE (24 * 1024)
#define MEM_TRISC1_KERNEL_SIZE (24 * 1024)
#define MEM_TRISC2_KERNEL_SIZE (24 * 1024)

#define MEM_BRISC_FIRMWARE_SIZE (10 * 1024 + MEM_BRISC_LOCAL_SIZE)
#define MEM_NCRISC_FIRMWARE_SIZE (16 * 1024 + MEM_NCRISC_LOCAL_SIZE)
#define MEM_TRISC0_FIRMWARE_SIZE (16 * 1024 + MEM_TRISC_LOCAL_SIZE)
#define MEM_TRISC1_FIRMWARE_SIZE (16 * 1024 + MEM_TRISC_LOCAL_SIZE)
#define MEM_TRISC2_FIRMWARE_SIZE (16 * 1024 + MEM_TRISC_LOCAL_SIZE)
#define MEM_ZEROS_SIZE 512

#define MEM_BOOT_CODE_BASE 0
Expand Down
4 changes: 2 additions & 2 deletions tt_metal/hw/inc/dev_msgs.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,15 @@ struct kernel_config_msg_t {
volatile uint16_t watcher_kernel_ids[DISPATCH_CLASS_MAX];
volatile uint16_t ncrisc_kernel_size16; // size in 16 byte units

volatile uint16_t host_assigned_id;

// Ring buffer of kernel configuration data
volatile uint32_t kernel_config_base[static_cast<int>(ProgrammableCoreType::COUNT)];
volatile uint16_t sem_offset[static_cast<int>(ProgrammableCoreType::COUNT)];
volatile uint16_t cb_offset;
rta_offset_t rta_offset[DISPATCH_CLASS_MAX];
volatile uint32_t kernel_text_offset[MaxProcessorsPerCoreType];

volatile uint16_t host_assigned_id;

volatile uint8_t mode; // dispatch mode host/dev
volatile uint8_t brisc_noc_id;
volatile uint8_t brisc_noc_mode;
Expand Down
4 changes: 2 additions & 2 deletions tt_metal/hw/inc/firmware_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ extern uint32_t __ldm_data_end[];
extern void (* __init_array_start[])();
extern void (* __init_array_end[])();

extern void kernel_init(uint32_t kernel_init);
extern void kernel_launch(uint32_t kernel_base_addr);
extern void kernel_init();
extern void kernel_launch();

inline void l1_to_local_mem_copy(uint32_t *local_mem_addr, uint32_t tt_l1_ptr *l1_addr, int32_t len) {
// Cover L1 load latency of 6 cycles for the bulk of the copy
Expand Down
Loading

0 comments on commit e966f77

Please sign in to comment.