Module Name: src Committed By: thorpej Date: Fri Jan 19 18:49:10 UTC 2024
Modified Files: src/sys/arch/x68k/include: cpu.h src/sys/arch/x68k/x68k: locore.s Log Message: Switch the x68k port to use the same clockframe layout as the other m68k ports. To generate a diff of this commit: cvs rdiff -u -r1.65 -r1.66 src/sys/arch/x68k/include/cpu.h cvs rdiff -u -r1.132 -r1.133 src/sys/arch/x68k/x68k/locore.s Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/x68k/include/cpu.h diff -u src/sys/arch/x68k/include/cpu.h:1.65 src/sys/arch/x68k/include/cpu.h:1.66 --- src/sys/arch/x68k/include/cpu.h:1.65 Thu Jan 18 14:39:07 2024 +++ src/sys/arch/x68k/include/cpu.h Fri Jan 19 18:49:10 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu.h,v 1.65 2024/01/18 14:39:07 thorpej Exp $ */ +/* $NetBSD: cpu.h,v 1.66 2024/01/19 18:49:10 thorpej Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -59,19 +59,20 @@ /* * Arguments to hardclock and gatherstats encapsulate the previous * machine state in an opaque clockframe. On the x68k, we use - * what the hardware pushes on an interrupt (frame format 0). + * what the locore.s glue puts on the stack before calling C-code. */ struct clockframe { - u_short sr; /* sr at time of interrupt */ - u_long pc; /* pc at time of interrupt */ - u_short vo; /* vector offset (4-word frame) */ -}; + u_int cf_regs[4]; /* d0,d1,a0,a1 */ + u_short cf_sr; /* sr at time of interrupt */ + u_long cf_pc; /* pc at time of interrupt */ + u_short cf_vo; /* vector offset (4-word frame) */ +} __attribute__((__packed__)); -#define CLKF_USERMODE(framep) (((framep)->sr & PSL_S) == 0) -#define CLKF_PC(framep) ((framep)->pc) +#define CLKF_USERMODE(framep) (((framep)->cf_sr & PSL_S) == 0) +#define CLKF_PC(framep) ((framep)->cf_pc) #if 0 /* We would like to do it this way... */ -#define CLKF_INTR(framep) (((framep)->sr & PSL_M) == 0) +#define CLKF_INTR(framep) (((framep)->cf_sr & PSL_M) == 0) #else /* but until we start using PSL_M, we have to do this instead */ #define CLKF_INTR(framep) (0) /* XXX */ Index: src/sys/arch/x68k/x68k/locore.s diff -u src/sys/arch/x68k/x68k/locore.s:1.132 src/sys/arch/x68k/x68k/locore.s:1.133 --- src/sys/arch/x68k/x68k/locore.s:1.132 Fri Jan 19 18:18:56 2024 +++ src/sys/arch/x68k/x68k/locore.s Fri Jan 19 18:49:10 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: locore.s,v 1.132 2024/01/19 18:18:56 thorpej Exp $ */ +/* $NetBSD: locore.s,v 1.133 2024/01/19 18:49:10 thorpej Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -672,8 +672,7 @@ ENTRY_NOPROFILE(timertrap) addql #1,_C_LABEL(intr_depth) INTERRUPT_SAVEREG | save scratch registers addql #1,_C_LABEL(intrcnt)+32 | count hardclock interrupts - lea %sp@(16),%a1 | a1 = &clockframe - movl %a1,%sp@- + movl %sp,%sp@- | push pointer to clockframe jbsr _C_LABEL(hardclock) | hardclock(&frame) addql #4,%sp CPUINFO_INCREMENT(CI_NINTR) | chalk up another interrupt