From 2062d62139afef0786f46e7f62395fc92d177462 Mon Sep 17 00:00:00 2001 From: nakasima Date: Wed, 3 Dec 2008 11:02:11 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9A=AB=E5=AE=9A=E7=9A=84=E3=81=AB=E3=82=BB?= =?UTF-8?q?=E3=82=AB=E3=83=B3=E3=83=89=E3=82=B3=E3=82=A2=E3=82=92WFI?= =?UTF-8?q?=E7=8A=B6=E6=85=8B=E3=81=AB=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@74 b871894f-2f95-9b40-918c-086798483c85 --- .../build/bootrom/jtag-only/ARM11/crt0.c | 1 - .../bootrom/build/libraries/init/ARM11/crt0.c | 23 +++++++++++++++ .../build/libraries/init/ARM9/crt0_app.c | 5 ---- .../bootrom/include/brom/hw/ARM11/mmap_brom.h | 1 + .../buildsetup/ioreg/io_register_list.csv | 28 +++++++++---------- trunk/include/ctr/hw/ARM11/arm11_reg.h | 12 ++++++++ trunk/include/ctr/hw/ARM11/mmap_global.h | 2 -- 7 files changed, 50 insertions(+), 22 deletions(-) diff --git a/trunk/bootrom/build/bootrom/jtag-only/ARM11/crt0.c b/trunk/bootrom/build/bootrom/jtag-only/ARM11/crt0.c index 5ab69dc..18da756 100644 --- a/trunk/bootrom/build/bootrom/jtag-only/ARM11/crt0.c +++ b/trunk/bootrom/build/bootrom/jtag-only/ARM11/crt0.c @@ -108,7 +108,6 @@ asm void _start( void ) #endif // BROM_ENABLE_DSP_WRAM - LSYM(10) b BSYM(10) } diff --git a/trunk/bootrom/build/libraries/init/ARM11/crt0.c b/trunk/bootrom/build/libraries/init/ARM11/crt0.c index e46262e..cd64e37 100644 --- a/trunk/bootrom/build/libraries/init/ARM11/crt0.c +++ b/trunk/bootrom/build/libraries/init/ARM11/crt0.c @@ -49,6 +49,29 @@ irq b STUPi_IrqHandler fiq b STUPi_DbgHandler stupStartHandlerVeneer + + //---- check CPU ID + mrc p15,0, r0, c0, c0, 5 + tst r0, #HW_C0_AP_CPU_ID_MASK + beq core0_start + + //---- Wait for IPI +#ifdef BROM_USE_MPCORE_EXTEND_OP + cpsid i +#else + mrs r0, cpsr + orr r1, r0, #HW_PSR_IRQ_DISABLE + msr cpsr_c, r1 +#endif + ldr r3, =REG_IDR_CNT_ADDR + mov r0, #REG_OS_IDR_CNT_E_MASK + str r0, [r3] +LSYM(10) + wfi + nop + b BSYM(10) + +core0_start b STUPi_StartHandler } diff --git a/trunk/bootrom/build/libraries/init/ARM9/crt0_app.c b/trunk/bootrom/build/libraries/init/ARM9/crt0_app.c index 3472af2..388ba74 100644 --- a/trunk/bootrom/build/libraries/init/ARM9/crt0_app.c +++ b/trunk/bootrom/build/libraries/init/ARM9/crt0_app.c @@ -62,11 +62,6 @@ asm void STUPi_StartHandler( void ) #endif // BROM_ENABLE_BOOTROM_WRITE - //---- set IME = 0 - // ( use that LSB of HW_REG_BASE equal to 0 ) - mov r12, #HW_REG_BASE - str r12, [r12, #REG_IME_OFFSET] - // init BROM prot ldr r3, =REG_PROT_ADDR ldr r1, =4*8 // 0x1204 diff --git a/trunk/bootrom/include/brom/hw/ARM11/mmap_brom.h b/trunk/bootrom/include/brom/hw/ARM11/mmap_brom.h index 79bc22c..376f0bf 100644 --- a/trunk/bootrom/include/brom/hw/ARM11/mmap_brom.h +++ b/trunk/bootrom/include/brom/hw/ARM11/mmap_brom.h @@ -28,6 +28,7 @@ extern "C" { #endif //------------------------------------- BROM +#define HW_BROM_IMG 0x00000000 #define HW_BROM HW_BIOS #define HW_BROM_END (HW_BROM + HW_BROM_SIZE) #define HW_BROM_SIZE 0x10000 // 64KB diff --git a/trunk/build/buildsetup/ioreg/io_register_list.csv b/trunk/build/buildsetup/ioreg/io_register_list.csv index f68cac3..6c2ae47 100644 --- a/trunk/build/buildsetup/ioreg/io_register_list.csv +++ b/trunk/build/buildsetup/ioreg/io_register_list.csv @@ -91,21 +91,21 @@ 0x149000,,KEYINPUT,16,rw,PAD,volatile,X,11,1,Y,10,1,L,9,1,R,8,1,DOWN,7,1,UP,6,1,LEFT,5,1,RIGHT,4,1,START,3,1,SEL,2,1,B,1,1,A,0,1,,,,,, 0x149002,,KEYCNT,16,rw,PAD,volatile,LOGIC,15,1,INTR,14,1,X,11,1,Y,10,1,L,9,1,R,8,1,DOWN,7,1,UP,6,1,LEFT,5,1,RIGHT,4,1,START,3,1,SEL,2,1,B,1,1,A,0,1 #SPI,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x142000,,SPI1CNT,16,rw,SPI,volatile,E,15,1,I,14,1,SEL,12,2,MODE,11,1,CLKMODE,10,1,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,, -0x142002,,SPI1D,8,rw,SPI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x143000,,SPI2CNT,16,rw,SPI,volatile,E,15,1,I,14,1,SEL,12,2,MODE,11,1,CLKMODE,10,1,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,, -0x143002,,SPI2D,8,rw,SPI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x14b000,,SPI3CNT,16,rw,SPI,volatile,E,15,1,I,14,1,MODE,11,1,CLKMODE,10,1,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x14b002,,SPI3D,8,rw,SPI,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x142000,,SPI1CNT,16,rw,SIO,volatile,E,15,1,I,14,1,SEL,12,2,MODE,11,1,CLKMODE,10,1,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,, +0x142002,,SPI1D,8,rw,SIO,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x143000,,SPI2CNT,16,rw,SIO,volatile,E,15,1,I,14,1,SEL,12,2,MODE,11,1,CLKMODE,10,1,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,, +0x143002,,SPI2D,8,rw,SIO,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x14b000,,SPI3CNT,16,rw,SIO,volatile,E,15,1,I,14,1,MODE,11,1,CLKMODE,10,1,BUSY,7,1,BAUDRATE,0,3,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x14b002,,SPI3D,8,rw,SIO,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, #I2C,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x144000,,I2C1_DAT,8,rw,OS,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x144001,,I2C1_CNT,8,rw,OS,volatile,E,7,1,I,6,1,RW,5,1,ACK,4,1,CNT,3,3,NT,2,1,START,1,1,STOP,0,1,,,,,,,,,,,,,,,,,,,,,,,, -0x144002,,I2C1_CNT_EX,16,rw,OS,volatile,LGCY,15,1,WT,1,1,SCL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x144004,,I2C1_SCL,16,rw,OS,volatile,HI_PRD,8,5,LO_PRD,0,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x145000,,I2C2_DAT,8,rw,OS,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x145001,,I2C2_CNT,8,rw,OS,volatile,E,7,1,I,6,1,RW,5,1,ACK,4,1,CNT,3,3,NT,2,1,START,1,1,STOP,0,1,,,,,,,,,,,,,,,,,,,,,,,, -0x145002,,I2C2_CNT_EX,16,rw,OS,volatile,LGCY,15,1,WT,1,1,SCL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -0x145004,,I2C2_SCL,16,rw,OS,volatile,HI_PRD,8,5,LO_PRD,0,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x144000,,I2C1_DAT,8,rw,SIO,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x144001,,I2C1_CNT,8,rw,SIO,volatile,E,7,1,I,6,1,RW,5,1,ACK,4,1,CNT,3,3,NT,2,1,START,1,1,STOP,0,1,,,,,,,,,,,,,,,,,,,,,,,, +0x144002,,I2C1_CNT_EX,16,rw,SIO,volatile,LGCY,15,1,WT,1,1,SCL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x144004,,I2C1_SCL,16,rw,SIO,volatile,HI_PRD,8,5,LO_PRD,0,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x145000,,I2C2_DAT,8,rw,SIO,volatile,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x145001,,I2C2_CNT,8,rw,SIO,volatile,E,7,1,I,6,1,RW,5,1,ACK,4,1,CNT,3,3,NT,2,1,START,1,1,STOP,0,1,,,,,,,,,,,,,,,,,,,,,,,, +0x145002,,I2C2_CNT_EX,16,rw,SIO,volatile,LGCY,15,1,WT,1,1,SCL,0,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0x145004,,I2C2_SCL,16,rw,SIO,volatile,HI_PRD,8,5,LO_PRD,0,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, #GPIO,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 0x14a000,,RCNT0_L,16,rw,EXI,volatile,RE1,15,1,RE0,14,1,I,8,1,DIR_SO,7,1,DIR_SI,6,1,DIR_SD,5,1,DIR_SC,4,1,DATA_SO,3,1,DATA_SI,2,1,DATA_SD,1,1,DATA_SC,0,1,,,,,,,,,,,,,,, 0x14a002,,RCNT0_H,16,rw,EXI,volatile,DATA_R7,7,1,DATA_R6,6,1,DATA_R5,5,1,DATA_R4,4,1,DATA_R3,3,1,DATA_R2,2,1,DATA_R1,1,1,DATA_R0,0,1,,,,,,,,,,,,,,,,,,,,,,,, diff --git a/trunk/include/ctr/hw/ARM11/arm11_reg.h b/trunk/include/ctr/hw/ARM11/arm11_reg.h index b7f79a2..1ad5bf3 100644 --- a/trunk/include/ctr/hw/ARM11/arm11_reg.h +++ b/trunk/include/ctr/hw/ARM11/arm11_reg.h @@ -44,6 +44,18 @@ extern "C" { // System Control Coprocessor //---------------------------------------------------------------------- +// Register 0.0 : ID Code +// Register 0.1 : Cache Type +// Register 0.3 : TLB Type + +// Register 0.5 : CPU ID + +#define HW_C0_AP_CLUSTER_ID_MASK 0x00000f00 // Cluster ID +#define HW_C0_AP_CPU_ID_MASK 0x00000003 // CPU ID + +#define HW_C0_AP_CLUSTER_ID_SFT 8 +#define HW_C0_AP_CPU_ID_SFT 0 + // Register 1.0 : Master Control #ifdef SDK_ARMULATOR diff --git a/trunk/include/ctr/hw/ARM11/mmap_global.h b/trunk/include/ctr/hw/ARM11/mmap_global.h index 596a1bc..7a1340d 100644 --- a/trunk/include/ctr/hw/ARM11/mmap_global.h +++ b/trunk/include/ctr/hw/ARM11/mmap_global.h @@ -73,9 +73,7 @@ extern "C" { #define HW_BIOS_IMG 0x00000000 #define HW_BIOS 0x00010000 #define HW_BIOS_END (HW_BIOS + HW_BIOS_SIZE) -#define HW_BIOS_IMG_END (HW_BIOS_IMG + HW_BIOS_EX_SIZE) #define HW_BIOS_SIZE 0x8000 // 32KB -#define HW_BIOS_IMG_SIZE 0x8000 // 32KB #define HW_RESET_VECTOR HW_BIOS