From 8f2a5f3837da61a4d49251ee65f91f0d2e8e48de Mon Sep 17 00:00:00 2001 From: eb Date: Wed, 16 Apr 2008 03:48:33 +0000 Subject: Merged gcell-wip -r8159:8202 into trunk. This includes the following changes: * gc_make_job_manager now returns a boost::shared_ptr * opts.program_handle is now a boost::shared_ptr * two new functions for getting a program handle * look_proc and alloc_job_desc now throw on error * static methods for setting and getting a single job manager * new exception hierarchy * mv gcell/src/lib/procs gcell/src/lib/wrapper * added libfft. Currently inverse xform is broken * gcell-embedspu-libtool creates libtool complaint .ko's from SPE executables git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@8209 221aa14e-8319-0410-a670-987f0aec2ac5 --- gcell/src/lib/runtime/spu/gc_spu_config.h | 2 +- gcell/src/lib/runtime/spu/gcell_qa.c | 109 --------------------------- gcell/src/lib/runtime/spu/gcell_runtime_qa.c | 109 +++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 110 deletions(-) delete mode 100644 gcell/src/lib/runtime/spu/gcell_qa.c create mode 100644 gcell/src/lib/runtime/spu/gcell_runtime_qa.c (limited to 'gcell/src/lib/runtime/spu') diff --git a/gcell/src/lib/runtime/spu/gc_spu_config.h b/gcell/src/lib/runtime/spu/gc_spu_config.h index 997645e68..6eff71060 100644 --- a/gcell/src/lib/runtime/spu/gc_spu_config.h +++ b/gcell/src/lib/runtime/spu/gc_spu_config.h @@ -24,7 +24,7 @@ #include #define CACHE_LINE_SIZE 128 // in bytes -#define GC_SPU_BUFSIZE_BASE (32 * 1024) // must be multiple of CACHE_LINE_SIZE +#define GC_SPU_BUFSIZE_BASE (40 * 1024) // must be multiple of CACHE_LINE_SIZE #define GC_SPU_BUFSIZE (GC_SPU_BUFSIZE_BASE + MAX_ARGS_EA * CACHE_LINE_SIZE) #define NGETBUFS 1 // single buffer job arg gets diff --git a/gcell/src/lib/runtime/spu/gcell_qa.c b/gcell/src/lib/runtime/spu/gcell_qa.c deleted file mode 100644 index 51bf38a6a..000000000 --- a/gcell/src/lib/runtime/spu/gcell_qa.c +++ /dev/null @@ -1,109 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2008 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include -#include -#include - - -#define _UNUSED __attribute__((unused)) - -// FIXME move these out of here; only for QA usage - -static void -qa_nop(const gc_job_direct_args_t *input _UNUSED, - gc_job_direct_args_t *output _UNUSED, - const gc_job_ea_args_t *eaa _UNUSED) -{ -} - -GC_DECLARE_PROC(qa_nop, "qa_nop"); - -static int -sum_shorts(short *p, int nshorts) -{ - int total = 0; - for (int i = 0; i < nshorts; i++) - total += p[i]; - - return total; -} - -static void -qa_sum_shorts(const gc_job_direct_args_t *input _UNUSED, - gc_job_direct_args_t *output, - const gc_job_ea_args_t *eaa) -{ - for (unsigned int i = 0; i < eaa->nargs; i++){ - short *p = eaa->arg[i].ls_addr; - int n = eaa->arg[i].get_size / sizeof(short); - output->arg[i].s32 = sum_shorts(p, n); - //printf("qa_sum_shorts(%p, %d) = %d\n", p, n, output->arg[i].s32); - } -} - -GC_DECLARE_PROC(qa_sum_shorts, "qa_sum_shorts"); - -static void -write_seq(unsigned char *p, int nbytes, int counter) -{ - for (int i = 0; i < nbytes; i++) - p[i] = counter++; -} - -static void -qa_put_seq(const gc_job_direct_args_t *input, - gc_job_direct_args_t *output _UNUSED, - const gc_job_ea_args_t *eaa) -{ - int counter = input->arg[0].s32; - - for (unsigned int i = 0; i < eaa->nargs; i++){ - unsigned char *p = eaa->arg[i].ls_addr; - int n = eaa->arg[i].put_size; - write_seq(p, n, counter); - counter += n; - } -} - -GC_DECLARE_PROC(qa_put_seq, "qa_put_seq"); - -static void -qa_copy(const gc_job_direct_args_t *input _UNUSED, - gc_job_direct_args_t *output, - const gc_job_ea_args_t *eaa) -{ - if (eaa->nargs != 2 - || eaa->arg[0].direction != GCJD_DMA_PUT - || eaa->arg[1].direction != GCJD_DMA_GET){ - output->arg[0].s32 = -1; - return; - } - - output->arg[0].s32 = 0; - unsigned n = eaa->arg[0].put_size; - if (eaa->arg[1].get_size < n) - n = eaa->arg[1].get_size; - - memcpy(eaa->arg[0].ls_addr, eaa->arg[1].ls_addr, n); -} - -GC_DECLARE_PROC(qa_copy, "qa_copy"); diff --git a/gcell/src/lib/runtime/spu/gcell_runtime_qa.c b/gcell/src/lib/runtime/spu/gcell_runtime_qa.c new file mode 100644 index 000000000..51bf38a6a --- /dev/null +++ b/gcell/src/lib/runtime/spu/gcell_runtime_qa.c @@ -0,0 +1,109 @@ +/* -*- c++ -*- */ +/* + * Copyright 2008 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include + + +#define _UNUSED __attribute__((unused)) + +// FIXME move these out of here; only for QA usage + +static void +qa_nop(const gc_job_direct_args_t *input _UNUSED, + gc_job_direct_args_t *output _UNUSED, + const gc_job_ea_args_t *eaa _UNUSED) +{ +} + +GC_DECLARE_PROC(qa_nop, "qa_nop"); + +static int +sum_shorts(short *p, int nshorts) +{ + int total = 0; + for (int i = 0; i < nshorts; i++) + total += p[i]; + + return total; +} + +static void +qa_sum_shorts(const gc_job_direct_args_t *input _UNUSED, + gc_job_direct_args_t *output, + const gc_job_ea_args_t *eaa) +{ + for (unsigned int i = 0; i < eaa->nargs; i++){ + short *p = eaa->arg[i].ls_addr; + int n = eaa->arg[i].get_size / sizeof(short); + output->arg[i].s32 = sum_shorts(p, n); + //printf("qa_sum_shorts(%p, %d) = %d\n", p, n, output->arg[i].s32); + } +} + +GC_DECLARE_PROC(qa_sum_shorts, "qa_sum_shorts"); + +static void +write_seq(unsigned char *p, int nbytes, int counter) +{ + for (int i = 0; i < nbytes; i++) + p[i] = counter++; +} + +static void +qa_put_seq(const gc_job_direct_args_t *input, + gc_job_direct_args_t *output _UNUSED, + const gc_job_ea_args_t *eaa) +{ + int counter = input->arg[0].s32; + + for (unsigned int i = 0; i < eaa->nargs; i++){ + unsigned char *p = eaa->arg[i].ls_addr; + int n = eaa->arg[i].put_size; + write_seq(p, n, counter); + counter += n; + } +} + +GC_DECLARE_PROC(qa_put_seq, "qa_put_seq"); + +static void +qa_copy(const gc_job_direct_args_t *input _UNUSED, + gc_job_direct_args_t *output, + const gc_job_ea_args_t *eaa) +{ + if (eaa->nargs != 2 + || eaa->arg[0].direction != GCJD_DMA_PUT + || eaa->arg[1].direction != GCJD_DMA_GET){ + output->arg[0].s32 = -1; + return; + } + + output->arg[0].s32 = 0; + unsigned n = eaa->arg[0].put_size; + if (eaa->arg[1].get_size < n) + n = eaa->arg[1].get_size; + + memcpy(eaa->arg[0].ls_addr, eaa->arg[1].ls_addr, n); +} + +GC_DECLARE_PROC(qa_copy, "qa_copy"); -- cgit