Changeset 13925
- Timestamp:
- Jul 5, 2010, 6:32:56 PM (14 years ago)
- Location:
- branches/arm/lisp-kernel
- Files:
-
- 3 edited
-
arm-asmutils.s (modified) (1 diff)
-
arm-constants.s (modified) (1 diff)
-
arm-gc.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/arm/lisp-kernel/arm-asmutils.s
r13737 r13925 64 64 65 65 _exportfn(C(store_conditional)) 66 __ifdef([LINUX]) 67 /* To deal with different ARM variants, Linux provides 68 a magic kernel function that does the right thing in 69 the absence of ldrex/strex/clrex and memory-barrier 70 functions. That function takes args in a different 71 order (r0 = expected oldval, r1 = newval, r2 = addr.) 72 */ 73 __(stmdb pc!,{r4,lr}) 74 __(eor r0,r0,r2) 75 __(eor r2,r2,r0) 76 __(eor r0,r0,r2) 77 0: __(ldr r3,[r2]) 78 __(cmp r3,r0) 79 __(bne 1f) 80 __(mov lr,#0xffff0fff) 81 __(add lr,lr,#(0xffff0fc0 - 0xffff0fff)) 82 __(blx lr) 83 __(bcc 0b) 84 1: __(mov r0,r3) 85 __(ldmia pc!,{r4,lr}) 86 __endif 66 0: __(ldrex r3,[r0]) 67 __(cmp r3,r1) 68 __(bne 1f) 69 __(strex ip,r2,[r0]) 70 __(cmp ip,#0) 71 __(bne 0b) 72 __(b 2f) 73 1: __(clrex) 74 2: __(mov r0,r3) 75 __(bx lr) 87 76 _endfn 88 77 -
branches/arm/lisp-kernel/arm-constants.s
r13810 r13925 597 597 _node(last_lisp_frame) /* when in foreign code */ 598 598 _node(cs_limit) /* cstack overflow limit */ 599 _node(bytes_consed_low) 599 600 _node(bytes_consed_high) 600 _node(bytes_consed_low)601 601 _node(log2_allocation_quantum) 602 602 _node(interrupt_pending) -
branches/arm/lisp-kernel/arm-gc.c
r13897 r13925 991 991 Bug(NULL, "Unknown stack word at 0x" LISP ":\n", current); 992 992 } 993 } 994 if (current != limit) { 995 Bug(NULL, "Ran off the end of cstack area\n"); 993 996 } 994 997 }
Note:
See TracChangeset
for help on using the changeset viewer.
