提交 eab5dac8 创建 作者: Nickolai Zeldovich's avatar Nickolai Zeldovich

keep .S files around

上级 71d0a8c6
...@@ -51,10 +51,15 @@ $(O)/%.o: %.c ...@@ -51,10 +51,15 @@ $(O)/%.o: %.c
$(Q)mkdir -p $(@D) $(Q)mkdir -p $(@D)
$(Q)$(CC) $(CFLAGS) -c -o $@ $< $(Q)$(CC) $(CFLAGS) -c -o $@ $<
$(O)/%.o: %.cc $(O)/%.S: %.cc
@echo " CXX $@" @echo " CXX $@"
$(Q)mkdir -p $(@D) $(Q)mkdir -p $(@D)
$(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< $(Q)$(CXX) $(CXXFLAGS) -S -o $@ $<
$(O)/%.o: $(O)/%.S
@echo " AS $@"
$(Q)mkdir -p $(@D)
$(Q)$(CC) $(ASFLAGS) -c -o $@ $<
$(O)/%.o: %.S $(O)/%.o: %.S
@echo " CC $@" @echo " CC $@"
...@@ -70,7 +75,7 @@ $(O)/fs.img: $(O)/tools/mkfs README $(UPROGS) ...@@ -70,7 +75,7 @@ $(O)/fs.img: $(O)/tools/mkfs README $(UPROGS)
@echo " MKFS $@" @echo " MKFS $@"
$(Q)$(O)/tools/mkfs $@ README $(UPROGS) $(Q)$(O)/tools/mkfs $@ README $(UPROGS)
.PRECIOUS: $(O)/%.o .PRECIOUS: $(O)/%.o $(O)/%.S
.PHONY: clean qemu gdb rsync .PHONY: clean qemu gdb rsync
## ##
......
#pragma once
#define E_RETRY -3
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
#include "syscall.h" #include "syscall.h"
#include "cpu.hh" #include "cpu.hh"
#include "kmtrace.hh" #include "kmtrace.hh"
#include "errno.h"
extern "C" int __uaccess_mem(void* dst, const void* src, u64 size); extern "C" int __uaccess_mem(void* dst, const void* src, u64 size);
extern "C" int __uaccess_str(char* dst, const char* src, u64 size); extern "C" int __uaccess_str(char* dst, const char* src, u64 size);
...@@ -83,6 +84,7 @@ syscall(u64 a0, u64 a1, u64 a2, u64 a3, u64 a4, u64 num) ...@@ -83,6 +84,7 @@ syscall(u64 a0, u64 a1, u64 a2, u64 a3, u64 a4, u64 num)
u64 r; u64 r;
mt_ascope ascope("syscall(%lx,%lx,%lx,%lx,%lx,%lx)", num, a0, a1, a2, a3, a4); mt_ascope ascope("syscall(%lx,%lx,%lx,%lx,%lx,%lx)", num, a0, a1, a2, a3, a4);
retry:
if(num < SYS_ncount && syscalls[num]) { if(num < SYS_ncount && syscalls[num]) {
mtstart(syscalls[num], myproc()); mtstart(syscalls[num], myproc());
mtrec(); mtrec();
...@@ -95,5 +97,7 @@ syscall(u64 a0, u64 a1, u64 a2, u64 a3, u64 a4, u64 num) ...@@ -95,5 +97,7 @@ syscall(u64 a0, u64 a1, u64 a2, u64 a3, u64 a4, u64 num)
r = -1; r = -1;
} }
if (r == E_RETRY)
goto retry;
return r; return r;
} }
$(O)/lib/%.o: CFLAGS:=$(CFLAGS) -DXV6_USER $(O)/lib/%.S: CFLAGS:=$(CFLAGS) -DXV6_USER
$(O)/lib/%.o: CXXFLAGS:=$(CXXFLAGS) -DXV6_USER $(O)/lib/%.S: CXXFLAGS:=$(CXXFLAGS) -DXV6_USER
ULIB = ulib.o usys.o printf.o umalloc.o uthread.o fmt.o stream.o ipc.o \ ULIB = ulib.o usys.o printf.o umalloc.o uthread.o fmt.o stream.o ipc.o \
threads.o crt.o wqlib.o wquser.o perf.o wqalloc.o threads.o crt.o wqlib.o wquser.o perf.o wqalloc.o
......
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论