123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /***********************************************************************************************************************
- * DISCLAIMER
- * This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products. No
- * other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
- * applicable laws, including copyright laws.
- * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING
- * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. TO THE MAXIMUM
- * EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES
- * SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS
- * SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
- * Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability of
- * this software. By using this software, you agree to the additional terms and conditions found by accessing the
- * following link:
- * http://www.renesas.com/disclaimer
- *
- * Copyright (C) 2013 Renesas Electronics Corporation. All rights reserved.
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- * File Name : sbrk.c
- * Device(s) : RX
- * Description : Configures the MCU heap memory. The size of the heap is defined by the macro HEAPSIZE below.
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- * History : DD.MM.YYYY Version Description
- * : 26.10.2011 1.00 First Release
- * : 12.03.2012 1.10 Heap size is now defined in r_bsp_config.h, not sbrk.h.
- * : 19.11.2012 1.20 Updated code to use 'BSP_' and 'BSP_CFG_' prefix for macros.
- * : 26.11.2013 1.21 Replaced stddef.h, stdio.h, and stdint.h includes with include for platform.h.
- * : 15.05.2017 1.30 Deleted unnecessary comments.
- * :(15.05.2017 2.00 Deleted unnecessary comments.)
- * Added the bsp startup module disable function.
- * :(01.11.2017 2.00 Added the bsp startup module disable function.)
- * : xx.xx.xxxx 2.01 Added support for GNUC and ICCRX.
- * Deleted unnecessary stddef.h, stdio.h, and stdint.h includes.
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- Includes <System Includes> , "Project Includes"
- ***********************************************************************************************************************/
- #include "r_bsp_config.h"
- /* Only use this file if heap is enabled in r_bsp_config. */
- #if (BSP_CFG_HEAP_BYTES > 0)
- /* Used for getting BSP_CFG_HEAP_BYTES macro. */
- #include "platform.h"
- /* When using the user startup program, disable the following code. */
- #if (BSP_CFG_STARTUP_DISABLE == 0)
- #if defined(__CCRX__) || defined(__GNUC__)
- /***********************************************************************************************************************
- Macro definitions
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- Typedef definitions
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- Exported global variables (to be accessed by other files)
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- Private global variables and functions
- ***********************************************************************************************************************/
- /* Memory allocation function prototype declaration (CC-RX and GNURX+NEWLIB) */
- int8_t *sbrk(size_t size);
- #if defined(__GNUC__)
- /* Memory address function prototype declaration (GNURX+OPTLIB only) */
- int8_t *_top_of_heap(void);
- #endif /* defined(__GNUC__) */
- //const size_t _sbrk_size= /* Specifies the minimum unit of */
- /* the defined heap area */
- extern int8_t *_s1ptr;
- union HEAP_TYPE
- {
- int32_t dummy; /* Dummy for 4-byte boundary */
- int8_t heap[BSP_CFG_HEAP_BYTES]; /* Declaration of the area managed by sbrk*/
- };
- /* Declare memory heap area */
- static union HEAP_TYPE heap_area;
- /* End address allocated by sbrk (CC-RX and GNURX+NEWLIB) */
- static int8_t *brk=(int8_t *)&heap_area;
- #if defined(__GNUC__)
- /* Start address of allocated heap area (GNURX+OPTLIB only) */
- int8_t *_heap_of_memory=(int8_t *)&heap_area;
- /* End address of allocated heap area (GNURX+OPTLIB only) */
- int8_t *_last_heap_object=(int8_t *)&heap_area;
- #endif /* defined(__GNUC__) */
- /***********************************************************************************************************************
- * Function name: sbrk
- * Description : This function configures MCU memory area allocation. (CC-RX and GNURX+NEWLIB)
- * Arguments : size -
- * assigned area size
- * Return value : Start address of allocated area (pass)
- * -1 (failure)
- ***********************************************************************************************************************/
- int8_t *sbrk(size_t size)
- {
- int8_t *p;
- if ((brk + size) > (heap_area.heap + BSP_CFG_HEAP_BYTES))
- {
- /* Empty area size */
- p = (int8_t *)-1;
- }
- else
- {
- /* Area assignment */
- p = brk;
- /* End address update */
- brk += size;
- }
- /* Return result */
- return p;
- }
- #if defined(__GNUC__)
- /***********************************************************************************************************************
- * Function name: _top_of_heap
- * Description : This function returns end address of reserved heap area. (GNURX+OPTLIB only)
- * Arguments : none
- * Return value : End address of reserved heap area
- ***********************************************************************************************************************/
- int8_t *_top_of_heap(void)
- {
- return (int8_t *)(heap_area.heap + BSP_CFG_HEAP_BYTES);
- }
- #endif /* defined(__GNUC__) */
- #endif /* defined(__CCRX__), defined(__GNUC__) */
- #endif /* BSP_CFG_STARTUP_DISABLE == 0 */
- #endif /* BSP_CFG_HEAP_BYTES */
|