diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-03-23 16:11:55 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2018-03-26 10:40:48 +0200 |
commit | b8c468bc9a1442dfe834a211ff473b0907964f0d (patch) | |
tree | c1aa7f0633d29674d5f7be906021ceffec2020fb /c/src/lib/libcpu/powerpc/mpc8xx/cpm/dpram.c | |
parent | bsp/mpc8260: Move libcpu content to bsps (diff) | |
download | rtems-b8c468bc9a1442dfe834a211ff473b0907964f0d.tar.bz2 |
bsp/tqm8xx: Move libcpu content to bsps
This patch is a part of the BSP source reorganization.
Update #3285.
Diffstat (limited to 'c/src/lib/libcpu/powerpc/mpc8xx/cpm/dpram.c')
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc8xx/cpm/dpram.c | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/c/src/lib/libcpu/powerpc/mpc8xx/cpm/dpram.c b/c/src/lib/libcpu/powerpc/mpc8xx/cpm/dpram.c deleted file mode 100644 index 4f6cb6d94a..0000000000 --- a/c/src/lib/libcpu/powerpc/mpc8xx/cpm/dpram.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * dpram.c - * - * MPC8xx dual-port RAM allocation routines - * - * Based on code (alloc860.c in eth_comm port) by - * Jay Monkman (jmonkman@frasca.com), - * which, in turn, is based on code by - * W. Eric Norum (eric@skatter.usask.ca). - * - * - * Modifications : - * Copyright (c) 1999, National Research Council of Canada - */ - -#include <rtems.h> -#include <rtems/error.h> - -#include <mpc8xx.h> -#include <mpc8xx/cpm.h> - -/* - * Allocation order: - * - Dual-Port RAM section 0 - * - Dual-Port RAM section 1 - * - Dual-Port RAM section 2 - * - Dual-Port RAM section 3 - * - Dual-Port RAM section 4 - */ -static struct { - uint8_t *base; - size_t size; - unsigned int used; -} dpram_regions[] = { - { (uint8_t *) &m8xx.dpram0[0], sizeof m8xx.dpram0, 0 }, - { (uint8_t *) &m8xx.dpram1[0], sizeof m8xx.dpram1, 0 }, - { (uint8_t *) &m8xx.dpram2[0], sizeof m8xx.dpram2, 0 }, - { (uint8_t *) &m8xx.dpram3[0], sizeof m8xx.dpram3, 0 }, - { (uint8_t *) &m8xx.dpram4[0], sizeof m8xx.dpram4, 0 }, -}; - -#define NUM_DPRAM_REGIONS (sizeof(dpram_regions) / sizeof(dpram_regions[0])) - -void * -m8xx_dpram_allocate( unsigned int byte_count ) -{ - unsigned int i; - ISR_Level level; - void *blockp = NULL; - - byte_count = (byte_count + 3) & ~0x3; - - /* - * Running with interrupts disabled is usually considered bad - * form, but this routine is probably being run as part of an - * initialization sequence so the effect shouldn't be too severe. - */ - _ISR_Local_disable (level); - - for ( i = 0; i < NUM_DPRAM_REGIONS; i++ ) { - /* - * Verify that the region is available for use. - * This test is necessary because if extra microcode modules - * are installed, some regions are locked and unavailable. - * See MPC860 User's Manual Pages 19-9 to 19-11. - */ - if (dpram_regions[i].used == 0) { - volatile unsigned char *cp = dpram_regions[i].base; - *cp = 0xAA; - if (*cp != 0xAA) - dpram_regions[i].used = dpram_regions[i].size; - else { - *cp = 0x55; - if (*cp != 0x55) - dpram_regions[i].used = dpram_regions[i].size; - } - *cp = 0x0; - } - if (dpram_regions[i].size - dpram_regions[i].used >= byte_count) { - blockp = dpram_regions[i].base + dpram_regions[i].used; - dpram_regions[i].used += byte_count; - break; - } - } - - _ISR_Local_enable(level); - - if (blockp == NULL) - rtems_panic("Can't allocate %d bytes of dual-port RAM.\n", byte_count); - return blockp; -} |