void sunxi_board_close_source(void) { // axp_set_vbus_limit_dc(); #ifdef CONFIG_BOOT_A15 extern int do_savecfg(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); extern void clear_boot_cpu_flag(void); do_savecfg(0,0,1,NULL); clear_boot_cpu_flag(); #endif mmc_exit(); timer_exit(); sunxi_key_exit(); #ifdef CONFIG_SUN6I p2wi_exit(); #endif sunxi_flash_exit(1); //强制关闭FLASH sunxi_sprite_exit(1); sunxi_dma_exit(); disable_interrupts(); interrupt_exit(); #if defined(CONFIG_ARCH_SUN9IW1P1) *( volatile unsigned int *)(0x008000e0) = 0x16aa0000; #endif return ; }
void sunxi_board_close_source(void) { mmc_exit(); timer_exit(); sunxi_key_exit(); sunxi_flash_exit(1); sunxi_sprite_exit(1); sunxi_dma_exit(); disable_interrupts(); interrupt_exit(); return ; }
void sunxi_board_close_source(void) { // axp_set_vbus_limit_dc(); mmc_exit(); timer_exit(); sunxi_key_exit(); #ifdef CONFIG_SUN6I p2wi_exit(); #endif sunxi_flash_exit(1); //强制关闭FLASH sunxi_sprite_exit(1); sunxi_dma_exit(); disable_interrupts(); interrupt_exit(); return ; }
void shareEqual(void) { void *p, *q; void **pp, **qq; mmc_uint_t slotsIdx; #if defined(MMC_STATE_APTR) || defined(MMC_STATE_LPTR) struct mmc_state *mmcState = &mmc_state; #endif /*MMC_STATE_APTR || MMC_STATE_LPTR*/ if (*pp != *qq) /* if pointers are different */ { /* check to see if pointers are in young or older */ if (mmc_isYoungOrOlder((void**)MMC_UNTAGPTR(pp)) && mmc_isYoungOrOlder((void**)MMC_UNTAGPTR(qq))) { mmc_uint_t idx = 0; /* point *pp to *qq to have sharing. */ fprintf(stderr, "Sharing %d %p <-> %p\n", slotsIdx, *pp, *qq); fflush(stderr); if (*pp > *qq) /* store qq in pp as pp is > than qq */ { MMC_STRUCTDATA(p)[slotsIdx] = *qq; if (!MMC_ISIMM(*qq)) { /* also check here if the array is not already in the trail */ for (idx = mmc_array_trail_size; &mmc_array_trail[idx] >= mmcATP; idx--) if (mmc_array_trail[idx] == *qq) /* if found, do not add again */ { break; } /* add the address of the array into the roots to be taken into consideration at the garbage collection time */ if( mmcATP == &mmc_array_trail[0] ) { (void)fprintf(stderr, "Array Trail Overflow!\n"); fflush(stderr); mmc_exit(1); } if (!idx) /* we didn't already find it */ *--mmcATP = p; } } else /* store pp in qq as qq is > than pp */ { MMC_STRUCTDATA(q)[slotsIdx] = *pp; if (!MMC_ISIMM(*pp)) { /* also check here if the array is not already in the trail */ for (idx = mmc_array_trail_size; &mmc_array_trail[idx] >= mmcATP; idx--) if (mmc_array_trail[idx] == *pp) /* if found, do not add again */ { break; } /* add the address of the array into the roots to be taken into consideration at the garbage collection time */ if( mmcATP == &mmc_array_trail[0] ) { (void)fprintf(stderr, "Array Trail Overflow!\n"); fflush(stderr); mmc_exit(1); } if (!idx) /* we didn't already find it */ *--mmcATP = q; } } } } }