앞의 문서(5517ref 소스비교)에 이어지는 내용이다. 워낙 분량이 많아서 두개의 문서로 나눈 것이니, 혼동 없기를 바란다.
여전히 가장 최근의 5517ref 소스와 여기석 소스와의 비교이다.
5517ref VS 여기석
make/defrules.mak
defrules.mak(5517ref)
$(CP) $(subst $(BAD_SLASH),$(GOOD_SLASH),$(@F)) \
defrules.mak(여기석)
$(CP) $(subst $(BAD_SLASH),$(GOOD_SLASH),$<) \
environment.mak(5517ref)
ifeq ($(DVD_HOST),unix) ... else SLASH := $(DOS_SLASH) GOOD_SLASH := $(DOS_SLASH) BAD_SLASH := $(UNIX_SLASH) DVD_BUILD_DIR := $(shell cd) ... # DVD_HOST = pc/win98 Make will build using DOS commands and paths ... ifeq "$(DVD_HOST)" "pc" ... else # For win98/win95 we remove all cmd /c parts CAT := type CD := cd CLS := cls CP := copy DIFF := fc /B ECHO := echo NULL := NUL: RM := -del RMDIR := rmdir RENAME := rename endif ... DVD_OS := OS21 ... ifneq "$(filter $(DVD_OS),OS20 OS21)" "$(DVD_OS)"
environment.mak(여기석)
ifeq ($(DVD_HOST),pc) SLASH := $(DOS_SLASH) GOOD_SLASH := $(DOS_SLASH) BAD_SLASH := $(UNIX_SLASH) DVD_BUILD_DIR := $(shell cd) else ... # DVD_HOST = pc Make will build using DOS commands and paths ... DVD_OS := OS40 ... ifneq "$(filter $(DVD_OS),OS20 OS40)" "$(DVD_OS)" ...
generic.mak(5517ref)
ST40_TOOLSET_PATH := -I$(shell cygpath -u $$ST40ROOT)/include ... ST40_TOOLSET_PATH := -I$(ST40ROOT)/include ...
generic.mak(여기석)
ST40_TOOLSET_PATH := -I$(shell cygpath -u $$ST40ROOT)/OS40/include -I$(shell cygpath -u $$ST40ROOT)/ST40/include ... ST40_TOOLSET_PATH := -I$(ST40ROOT)/OS40/include -I$(ST40ROOT)/ST40/include
options.lnt(5517ref)
+rw(__inline) // support __inline reserved word
options.lnt(여기석)
윗 부분을 제외하고는 동일하다
sysconf.mak(5517ref)
:mb361:5516 :mb382:5517 :mb376:5528 :espresso:5528 ... :mediaref:GX1 :mb376:GX1 :espresso:GX1
sysconf.mak(여기석)
:mb361:5516 :mb382:5517 ... :mediaref:GX1
toolset.mak(5517ref)
ifeq "$(findstring $(DVD_FRONTEND),5514 5516 5517 5528)" "$(DVD_FRONTEND)" ... $(CC) -debug-runtime -g -cpp $< $(ST20_CFLAGS) $($(basename $@)_CFLAGS) $($(basename $@)_ST20_CFLAGS)\ ... $(CC) -debug-runtime -g $(LIBRARIES) -T $(CONFIG_FILE) \ ... CC = sh4gcc AR = sh4ar LD = sh4gcc RUN = sh4xrun DB = sh4gdb LINK = sh4gcc ... # Default is to run from region P1 (cached) ifndef OS21_REGION OS21_REGION := p1 endif CFLAGS += $(DVD_CFLAGS) ... CFLAGS += -O$(OPTLEVEL) -DST40_OS21 LDOPTS = -mboard=$(DVD_PLATFORM)$(if $($(basename $@)_REGION),$($(basename $@)_REGION),$(OS21_REGION)) \ -mruntime=os21 -lm AROPTS = -cr ... $(CC) $(ST40_CFLAGS) $($(basename $@)_CFLAGS) $($(basename $@)_ST40_CFLAGS) \ $(INCLUDES) $(BASE_INCLUDES) $(OS_INCLUDES) -mruntime=os21 -o $@ -c $< ... $(AR) -cr $@ $(filter %.o,$^) $(foreach LIB,$(filter lib%.a,$^),$(shell $(AR) -t $(FIRST_LIB_IN_PATH)))
toolset.mak(여기석)
ifeq "$(findstring $(DVD_FRONTEND),5514 5516 5517)" "$(DVD_FRONTEND)" ... $(CC) $< $(ST20_CFLAGS) $($(basename $@)_CFLAGS) $($(basename $@)_ST20_CFLAGS)\ ... $(CC) $(LIBRARIES) -T $(CONFIG_FILE) \ ... CC = st40cc AR = st40ar LINK = st40ld MKARCH = os40mkarch ... CFLAGS += $(DVD_CFLAGS) -c -little -DOS40 -i ... CFLAGS += -O$(OPTLEVEL) # Determine ST40 platform ST40_PLATFORMS := :GX1:st40GX1-demo :NGX1:st40GX1-demo \ :7750:sh4overdrive :STB1:st40stb1-overdrive # Calculate ST40_PLATFORM from platform list ST40_PLATFORM := $(strip \ $(foreach i,$(ST40_PLATFORMS),\ $(if $(findstring :$(DVD_FRONTEND):,$(i)),\ $(subst :$(DVD_FRONTEND):,,$(i)),))) # OS40 libraries OSLIB_PATH := -L$(ST40ROOT)/ST40/lib -L$(ST40ROOT)/OS40/lib # OS40 includes OS_INCLUDES := -I$(ST40ROOT)/OS40/platform/$(ST40_PLATFORM)/include/chorus ... $(CC) $< $(ST40_CFLAGS) $($(basename $@)_CFLAGS) $($(basename $@)_ST40_CFLAGS) \ $(INCLUDES) $(BASE_INCLUDES) $(OS_INCLUDES) -o $@ ... $(AR) $@ -r $(filter %.o,$^) $(foreach LIB,$(filter lib%.a,$^),$(shell $(AR) -t $(FIRST_LIB_IN_PATH))) ... ifdef DEBUG MKARCH_EXTRA := -d endif CONFIG_FILE = $(if $(SPECIAL_CONFIG_FILE),$(SPECIAL_CONFIG_FILE),\ $(DVD_PLATFORM)$(if $(UNIFIED_MEMORY),_um).cfg) ifdef GENERATE_MAP EXTRA_LINK_FLAGS = -M $(basename $@).map endif ... $(LINK) -N little $(LIBRARIES) \ $(ST40_LKFLAGS) $(EXTRA_LINK_FLAGS) $($(basename $@)_LKFLAGS) $($(basename $@)_ST40_LKFLAGS) \ ... $(if $(filter user,$($(basename $@)_ACTOR)),-lebd.u,-lebd.s) -lCXX_40le \ -lc_40le -r -o $(basename $@).r $(MKARCH) -p $(ST40_PLATFORM) $(ST40_MKFLAGS) $($(basename $@)_ST40_MKFLAGS) \ $(MKARCH_EXTRA) -c $@ \ $(if $(filter user,$($(basename $@)_ACTOR)),-u,-s) $(basename $@).r $(RM) $(basename $@).r endef ... st40run $(addprefix -l ,$(CFG_PATH)) -i $(CONFIG_FILE) -t $(TARGET) $(subst _RUN,,$@) \ $(ST40_RUNARGS) $(DVD_RUNARGS) endef ... st40run -g $(addprefix -l ,$(CFG_PATH)) -i $(CONFIG_FILE) -t $(TARGET) $(subst _DEBUG_RUN,,$@) \ $(ST40_RUNARGS) $(DVD_RUNARGS) ... endif # ST40 toolset variables and rules
src/pti
ptidma.c(5517ref)
if(slot_data->general_dma != NO_DMA) { } ... unsigned int avd = slot; ... #ifdef PTI3 switch (avd) { case PTI_VIDEO_SLOT: interrupt_lock(); tc[DMA_ENABLE] = 0xf - (2<<avd); tc[DMA1_SETUP] = 1; tc[DMA1_BASE] = (unsigned int)(data); tc[DMA1_TOP] = (unsigned int)(0xffffffff); tc[DMA1_WRITE] = (unsigned int)(data+length); tc[DMA1_READ] = (unsigned int)(data); tc[DMA1_CDADDR] = VIDEO_CD_FIFO; tc[DMA_ENABLE] = 0xf; ptii_last_dma_write[avd] = (unsigned int)(data+length); ... interrupt_unlock(); break; ... interrupt_lock(); tc[DMA_ENABLE] = 0xf - (2<<avd); tc[DMA2_SETUP] = 1; tc[DMA2_BASE] = (unsigned int)(data); tc[DMA2_TOP] = (unsigned int)(0xffffffff); tc[DMA2_WRITE] = (unsigned int)(data+length); tc[DMA2_READ] = (unsigned int)(data); tc[DMA2_CDADDR] = AUDIO_CD_FIFO; tc[DMA_ENABLE] = 0xf; ptii_last_dma_write[avd] = (unsigned int)(data+length); /* If required, enable the DMA interrupt for the slot */ if (ptii_callbacks[pti_interrupt_dma_complete].callback_fn != NULL) { volatile unsigned int tmp; tmp = tc[DMAempty_EN]; tmp |= (1 << slot); tc[DMAempty_EN] = tmp; } interrupt_unlock(); break; ... interrupt_lock(); tc[DMA_ENABLE] = 0xf - (2<<avd); tc[DMA3_SETUP] = 1; tc[DMA3_BASE] = (unsigned int)(data); tc[DMA3_TOP] = (unsigned int)(0xffffffff); tc[DMA3_WRITE] = (unsigned int)(data+length); tc[DMA3_READ] = (unsigned int)(data); tc[DMA3_CDADDR] = I_DATA_CD_FIFO; tc[DMA_ENABLE] = 0xf; ptii_last_dma_write[avd] = (unsigned int)(data+length); /* If required, enable the DMA interrupt for the slot */ if (ptii_callbacks[pti_interrupt_dma_complete].callback_fn != NULL) { volatile unsigned int tmp; tmp = tc[DMAempty_EN]; tmp |= (1 << slot); tc[DMAempty_EN] = tmp; } interrupt_unlock(); break; default: break; } #else /* --- Initialize dma engine in case of PTI1 --- */ /* --- Initialize dma engine for tranfer --- */ interrupt_lock(); tc[DMA_ENABLE] = 0xf - (2<<avd); tc[DMA1_BASE+avd] = (unsigned int)(data); tc[DMA1_TOP+avd] = (unsigned int)(0xFFFFFFFF); tc[DMA1_WRITE+avd] = (unsigned int)(data+length); tc[DMA1_READ+avd] = (unsigned int)(data); tc[DMA_ENABLE] = 0xf; ptii_last_dma_write[avd] = (unsigned int)(data+length); interrupt_unlock(); #endif ... boolean ptii_dma_synchronize( unsigned int slot ) { ptii_slot_t *slot_data = &ptii_slots[slot]; /* --- Wait for completion --- */ #ifdef PTI3 switch(slot) { case PTI_VIDEO_SLOT: while( ptii_last_dma_write[slot] != tc[DMA1_READ]) { task_delay(2); } break; case PTI_AUDIO_SLOT: while( ptii_last_dma_write[slot] != tc[DMA2_READ]) { task_delay(2); } break; case PTI_DATA_SLOT: while( ptii_last_dma_write[slot] != tc[DMA3_READ]) { task_delay(2); } break; default: return(true); break; } #else while( ptii_last_dma_write[slot] != tc[DMA1_READ+slot] ) { task_delay(2); /* PMC 16/05/00 added delay to remove busy loop */ } #endif ptii_busy_wait_one_packet_time(); /* --- Restore data --- */ initialize_avd_dma( slot, slot_data->buffer_base, slot_data->buffer_top ); return false; }
ptidma.c(여기석)
#ifdef PTI3 ... #endif /* --- Initialize dma engine for tranfer --- */ setup_transfer_on_avd_dma( slot, data, length ); return false; } ... boolean ptii_dma_synchronize( unsigned int slot ) { ptii_slot_t *slot_data = &ptii_slots[slot]; /* --- Wait for completion --- */ #ifdef PTI3 switch(slot) { case PTI_VIDEO_SLOT: while( ptii_last_dma_write[slot] != tc[DMA1_READ]) { task_delay(2); } break; case PTI_AUDIO_SLOT: while( ptii_last_dma_write[slot] != tc[DMA2_READ]) { task_delay(2); } break; ... while( ptii_last_dma_write[slot] != tc[DMA3_READ]) { task_delay(2); } break; default: return(true); break; } #else while( ptii_last_dma_write[slot] != tc[DMA1_READ+slot] ) { task_delay(2); /* PMC 16/05/00 added delay to remove busy loop */ } #endif ptii_busy_wait_one_packet_time(); /* --- Restore data --- */ initialize_avd_dma( slot, slot_data->buffer_base, slot_data->buffer_top );