Files
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

81 lines
1.6 KiB
C

#include <stdlib.h>
#include <string.h>
void _mdma_memcpy (bu32 dst, bu32 src, bu32 size, bs16 mod)
{
bu32 count = size >> (abs (mod) / 2);
bu16 wdsize;
switch (abs (mod))
{
case 4: wdsize = WDSIZE_32; break;
case 2: wdsize = WDSIZE_16; break;
default: wdsize = WDSIZE_8; break;
}
s->config = d->config = 0;
d->irq_status = DMA_DONE | DMA_ERR;
/* Destination */
d->start_addr = dst;
d->x_count = count;
d->x_modify = mod;
d->irq_status = DMA_DONE | DMA_ERR;
/* Source */
s->start_addr = src;
s->x_count = count;
s->x_modify = mod;
s->irq_status = DMA_DONE | DMA_ERR;
/* Enable */
s->config = DMAEN | wdsize;
d->config = WNR | DI_EN | DMAEN | wdsize;
while (!(d->irq_status & DMA_DONE))
continue;
}
void mdma_memcpy (bu32 dst, bu32 src, bu32 size);
#ifndef MAX_LEN
#define MAX_LEN 0x40000
#endif
bu32 _data[(MAX_LEN / 4) * 2 + 3];
char *data = (char *)(_data + 1);
int _start (void)
{
char *src, *dst;
bu32 len, canary, *canaries[3];
canary = 0x12345678;
len = 4;
while (len < MAX_LEN)
{
src = data;
dst = data + len + 4;
/* Set up the canaries. */
canaries[0] = (void *)&src[-4];
canaries[1] = (void *)&dst[-4];
canaries[2] = (void *)&dst[len];
*canaries[0] = *canaries[1] = *canaries[2] = canary;
memset (src, 0xad, len);
memset (dst, 0x00, len);
mdma_memcpy ((bu32)dst, (bu32)src, len);
if (memcmp (src, dst, len))
DBG_FAIL;
if (*canaries[0] != canary ||
*canaries[1] != canary ||
*canaries[2] != canary)
DBG_FAIL;
len <<= 4;
}
DBG_PASS;
}