Hi all, I want to enable I cache and data cachein arm922t.I enabled the I cache by setting the control bit in cp15.But the code hangs while enabling D cache.Iam running the code in system mode. The code i used is given below.Can anybody help me.. MRC p15, 0, r0, c1, c0, 0 @ read CP15 register 1 into r0 BIC r0, r0, #0x1 @ clear bit 0 MCR p15, 0, r0, c1, c0, 0 @ write value back @Initialization instruction cache @ @ MRC p15, 0, r0, c1, c0, 0 @ read CP15 register 1 into r0 @ ORR r0, r0, #0xc0000000 @ set asynchronous clocking mode @ ORR r0, r0, #0x1000 @ enable I cache @ MCR p15, 0, r0, c1, c0, 0 @ write back r0 into CP15 register 1 init_ttb MOV r0,#0x28000 @ set start of Translation Table base (16k Boundary) MCR p15, 0, r0, c2, c0, 0 @ write to CP15 register 2 @ Create translation table for flat mapping @ Top 12 bits of VA is pointer into table @ Create 4096 entries from 000xxxxx to fffxxxxx LDR r1,=0xfff @ loop counter MOV r2,#2_110000000000 @ set access permissions (AP) for full access SVC/USR (11:10) ORR r2,r2,#2_000111100000 @ set for domain 15 (8:5) ORR r2,r2,#2_000000010000 @ must be 1 (4) ORR r2,r2,#2_000000000000 @ set non cachable non bufferable (CB) (3:2) ORR r2,r2,#2_000000000010 @ set for 1Mb section (1:0) @ init_ttb_1 ORR r3,r2,r1,lsl#20 @ use loop counter to create individual table entries STR r3,[r0,r1,lsl#2] @ str r3 at TTB base + loopcount*4 SUBS r1,r1,#1 @ decrement loop counter BPL init_ttb_1 @ ORR r3,r3,#2_1100 @ set cachable and bufferable attributes for section 0 (3:2) STR r3,[r0] @ ie lower 1MB - this will set cache to Write Back mode @ @init_domains MOV r0,#(2_01 << 30) @ must define behaviour for domain 15 (31:30), set client MCR p15, 0, r0, c3, c0, 0 @ write to CP15 register 5 @ @ set global core configurations @ MRC p15, 0, r0, c1, c0, 0 @ read CP15 register 1 into r0 ORR r0, r0, #(0x1 <<12) @ enable I Cache ORR r0, r0, #(0x1 <<2) @ enable D Cache ORR r0, r0, #(2_11 <<30) @ enable asynchronous clocking mode ORR r0, r0, #0x1 @ enable MMU @ @ additional configuration options @ @ ORR r0, r0, #(0x1 <<14) @ enable Round Robin cache replacement @ ORR r0, r0, #(0x1 <<13) @ enable Hi Vectors @ ORR r0, r0, #(0x1 <<1) @ enable data address alignment checking MCR p15, 0, r0, c1, c0, 0 @ write cp15 register 1 MOV pc,lr @ return .end Thanks in advance Mithun
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.